1.聚合函数
sum() 求和 avg() 求平均值 min() 返回最小值 max() 返回最大值 count() 返回记录行数
例:
select count(*) as '操作员个数' from j_user ----// 返回共有多少个操作员
注意:
count(*) 统计所有记录行的数目
count(字段名)只统计指定列上有非空值的记录条数
例句: 要求查询自营店06年至07年两年共销售了多少数量与金额?
select sum(a.nums) as '数量',sum(a.s_price*nums) as '金额'
from d_retailsub a join d_retail b on a.retailid=b.retailid
where sure_date between '2006-01-01' and '2007-12-31' and b.sure=1
返回:
数量 金额
-------------------------------------
53849 29621042.94
2.分组汇总
例句: 要求查询自营店06年中每个月的销售、每个月的各个小类也需要汇总
select datepart(mm,sure_date) as '销售月份',j_style.st_xz as '小类', --//datepart(mm,sure_date) 从日期中提取月份出来
sum(d_retailsub.s_price*nums) as '金额' from d_retail join d_retailsub --//聚合函数sum(d_retailsub.s_price*nums)计算出金额
on d_retail.retailid=d_retailsub.retailid join j_style on d_retailsub.styleid=j_style.styleid --//左联接
where sure_date between '2006-01-01' and '2006-12-31' and d_retail.sure=1 --// between 指定截止时间
group by datepart(mm,sure_date),j_style.st_xz --//分组汇总时可以指定多个汇总条件
order by datepart(mm,sure_date),j_style.st_xz --//排序时也可以指定多个排序条件
返回:
销售月份 小类 金额
---------------------------------------------------------
8 衬衫 46084.70
8 领带 819.00
8 牛仔裤 29378.05
8 皮包 7306.80
8 皮带 16922.35
……
9 长袖衬衫 5457.50
9 衬衫 95265.55
9 毛衫 8099.25
9 牛仔裤 64497.35
9 牛仔衫 3722.40
9 皮包 8967.00
……
10 长袖衬衫 65581.80
10 衬衫 156121.15
10 毛衫 120830.65
10 牛仔裤 231993.75
10 牛仔衫 2682.90
10 皮包 17133.95
……
3. select 语句执行的顺序
from 子句组装来自不同的数据源的数据;
where 子句基于指定的条件对记录进行筛选;
group by 子句将数据分为多个组;
使用聚集函数进行分组;
使用 having 子句筛选分组;
计算所有的表达式;
使用 order by 对结果进行排序;
例句:使用 having 子句对分组进行筛选
要求查询自营店2006年10月份每天销售大于50000元的记录
select datepart(dd,sure_date) as '销售日期',sum(d_retailsub.s_price*nums) as '金额' --//datepart(mm,sure_date) 从日期中提取日出来
from d_retail join d_retailsub on d_retail.retailid=d_retailsub.retailid --//左联接
where sure_date between '2006-10-01' and '2006-10-31' and d_retail.sure=1 --// between 指定截止时间
group by datepart(dd,sure_date) --//分组汇总时可以指定多个汇总条件
having sum(d_retailsub.s_price*nums)>50000 --//having 对分组后的金额进行筛选
order by datepart(dd,sure_date) --//排序
返回:
销售日期 金额
----------------------------------------------------------------
8 58621.60
9 105024.55
11 72197.25
12 212132.00
13 61351.70
16 292789.75
17 76108.20
23 z107167.15
26 119742.70
27 76721.70
28 76259.40
29 80773.21
30 60864.75