聚合函数与分组【转】
需要注意count(*)和count(列名)的用法区别
使用count(列名)当某列出现null值的时候,count(*)仍然会计算,但是count(列名)不会
在使用count(distinct 列名),过滤掉重复数据
GROUP BY 语句
GROUP BY 语句用于结合合计函数,根据一个或多个列对结果集进行分组。
SQL GROUP BY 语法
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
需要注意的是 在分组中(即出现了group by 子句)必须满足下列2个条件:
1.查询的列必须是分组(聚合)函数,例如max(s_score) avg(s_score)
2.或者查询的列必须是分组列
ORACLE的一个数字函数round来解决数字格式化问题如:select round ((s_score),2)from student group by s_name;
需要注意having和where的用法区别:
1. having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)
2. where肯定在group by 之前,即也在having之前
3. where后的条件表达式里不允许使用聚合函数,而having可以
当一个查询语句同时出现了where,group by,having,order by的时候,执行顺序和编写顺序是:
1。首先执行select xx from xx,返回一个结果记录集合
2.使用where对结果记录集合里的数据进行筛选
3.使用group by 对筛选后的结果分组
4.使用having对分组后的结果再次筛选
5.对最后剩下来的数据进行排序