MySQL学习—GROUP BY与HAVING

  • Post author:
  • Post category:mysql




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 版权协议,转载请附上原文出处链接和本声明。