GROUP BY
SQL中GROUP BY语句用于分组查询,与聚合函数联合使用,常见的aggregate function有:
- COUNT():数目统计
- SUM():列值求和
- AVG():分组求均值
- MIN()和MAX():求最值
使用语法如下:
SELECT column1, column2,aggregate_function(expression)
FROM table_name
WHERE conditions
GROUP BY column1,column2;
GROUP BY语句使用时,SELECT语句中出现的元素要么为一个聚合函数的输入值,要么为GROUP BY语句的参数;
也就是说我们在使用GROUP BY分组查询时,SELECT中不能有除聚合函数和分组属性中的其他属性
HAVING
HAVING用于分组后的条件判断,WHERE无法用于GROUP BY后条件判断。
语法为:
SELECT column1,column2,aggregate_function(expression)
FROM table_name
WHERE conditons
GROUP BY column1,column2
HAVING groupBy_conditions
这里我们举一个简单的例子来说明
首先创建了一个员工的salaries工资信息表:
-
salaries表
假设我们要查询至‘999-01-10’最高工资的员工号和工资,如果直接写:
SELECT emp_no,max(salary)
FROM salaries
WHERE to_date='9999-01-01';
就会报如下的错,提示聚合函数要和group by一起使用
正确的写法:
SELECT emp_no,max(salary)
FROM salaries
WHERE to_date='9999-01-01'
GROUP BY emp_no;
如果SELECT中多查一个属性也会报错:
这里多查了一个from_date
参考博文:
https://www.cnblogs.com/geogre123/p/11177204.html
版权声明:本文为qq_42814064原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。