分组查询

分组查询主要涉及到两个子句,分别是:group byhaving

一group by

取得每个工作岗位的工资合计,要求显示岗位名称和工资合计

mysql> select job, sum(sal) from emp group by job;
+-----------+----------+
| job       | sum(sal) |
+-----------+----------+
| ANALYST   |  6000.00 |
| CLERK     |  4150.00 |
| MANAGER   |  8275.00 |
| PRESIDENT |  5000.00 |
| SALESMAN  |  5600.00 |
+-----------+----------+
如果使用了order by,那么order by必须放在group by后面,否则,会报错。

SQL语句中若有group by语句,那么在select语句后面只能跟分组函数+参与分组的字段

二having

如果想对分组数据再进行过滤需要使用having子句

取得每个岗位的平均工资大于2000

mysql> select job from emp group by job having avg(sal) > 2000;
+-----------+
| job       |
+-----------+
| ANALYST   |
| MANAGER   |
| PRESIDENT |
+-----------+

三select语句总结

一个完整的select语句结构如下:

select

        字段...

from

        表...

where 

        过滤条件...

group by

        分组条件...

having

        分组之后的过滤条件

order by

        字段...

以上语句的执行顺序

        1. 首先执行where语句过滤原始数据

        2. 执行group by进行分组

        3. 执行having对分组数据进行操作

        4. 执行select选出数据

        5. 执行order by排序

原则:能在where中过滤的数据,尽量在where中过滤,效率较高。having的过滤是专门对分组之后的数据进行过滤的。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值