如你梦想和现实只是一步之遥,那么我觉得这一步就应该是执着和笨蛋式的坚持了吧。

SQL GROUP BY和HAVING

SQL 独孤九剑 73℃

在SELECT语句中指定的每个列名也在GROUP BY子句中提到,未在这两个地方提到的列名将产生错误。GROUP BY子句对dept和edlevel的每个唯一组合各返回一行。
GROUP BY子句之后使用Having子句
可应用限定条件进行分组,以便系统仅对满足条件的组返回结果。因此,在GROUP BY子句后面包含了一个HAVING子句。HAVING类似于WHERE(唯一的差别是WHERE过滤行,HAVING过滤组)AVING支持所有WHERE操作符。

id name dept salary edlevel hiredate
—— —— ——— —— ——- ————
1 张三 开发部 2000 3 2009-10-11
2 李四 开发部 2500 3 2008-10-11
3 王五 设计部 2600 5 2010-10-11
4 王六 设计部 2300 4 2009-10-11
5 马七 设计部 2100 4 2011-10-11
6 赵八 销售部 3000 5 2013-10-11
7 钱九 销售部 3100 7 2015-10-11
8 孙十 销售部 3500 7 2009-10-11
9 yefeng 售前部 1000 7 (NULL)

查询每个部门的最高工资:
SELECT dept ‘部门’, MAX(salary) ‘最高工资’, MIN(salary) ‘最低工资’ FROM staff GROUP BY dept

部门 最高工资 最低工资
——— ———— ————–
售前部 1000 1000
开发部 2500 2000
设计部 2600 2100
销售部 3500 3000

例如,查找雇员数超过2个的部门的最高和最低薪水:
SELECT dept ‘部门’, MAX(salary) ‘最高工资’, MIN(salary) ‘最低工资’ FROM staff GROUP BY dept HAVING COUNT(*) > 2
部门 最高工资 最低工资
——— ———— ————–
设计部 2600 2100
销售部 3500 3000
例如,查找雇员平均工资大于3000的部门的最高薪水和最低薪水:
SELECT dept,MAX(salary) AS MAXIMUM,MIN(salary) AS MINIMUM
FROM STAFF
GROUP BY dept
HAVING AVG(salary) > 3000
ORDER BY dept

dept MAXIMUM MINIMUM
——— ——- ———
销售部 3500 3000

转自:https://blog.csdn.net/bingogirl/article/details/52559302

PS: 服务器页面生成花费时间 0.15秒 查询 41 次

转载请注明:KEEP3YUE » SQL GROUP BY和HAVING

喜欢 (0)