一、聚合函数
1 执行行和列计数(count)
select count (*) from 表名; * 返回全部值,包括null值
select count (all 列名0 from 表名; * 排除空值
select count (distinct 列名) from 表名; * 排空,去重。
2 返回列合计算(sum)
select sum (列名) from 表名; *求整形和浮点型。
select sum (*) from 表名; *写法错误(sum不可使用*通配符)
3 获取平均值(avg)
select avg(列名) from 表名; *自动过滤null值,返回值错误。
select avg (列名) from 表名 where 列名 is not null;
select sum(列名)/count(liem) as 列名 from 表名;
4 返回最值(max/min) 没有all distinct *这些规范
SELECT MAX(s_grade) FROM t_stu; *最大值
SELECT MIN(s_grade) FROM t_stu; *最小值
二、数据分组(行分组)
1 过滤分组数据 :
select 列名,集合函数 from 表名 (where 条件) grounp by 列名; 单行
select 列名,列名 from 表名 group by 列名,列名; 多行
*group by 后两个条件,若第一个分组完成,第二个在第一个的基础上分组。
使用后,投影的列有两种:1.group by 后面的列
2.聚合函数使用的列
过程:from 存储、 where条件过滤、 分组、 集合投影。
2 使用having语句:
select 列名 from 表名 group by 列名 having 条件;
HAVING和WHERE区别
二者都是过滤条件,WHERE运行在分组前,因此不能执行任何聚合函数。
HAVING是运行在分组后,只能用做聚合函数的过滤。
SQL的执行顺序
第一步:执行FROM
第二步:WHERE条件过滤
第三步:GROUP BY分组
第四步:执行SELECT投影列
第五步:HAVING条件过滤
第六步:执行ORDER BY 排序
第七步:LIMITI 限定返回行