关于GROUP BY的注意事项和HAVING 与 WHERE 的区别

先给出语法
SELECT [DISTINCT] 分组字段1 [AS ] [列别名], 统计函数 [AS] [别名] ,… …
FROM 表名称1 [表别名1],表名称2[表别名2],… …
[WHERE 条件(s)]
[GROUP BY 分组字段1,分组字段2,… …]
[HAVING 过滤条件(s)]
[ORDER BY 排序字段 ASD|DESC];

注意事项一
如果没有GROUP BY 子句,则在SELECT 子句中只允许出现统计函数,其它任何字段都不允许出现。
例如:SELECT deptno, COUNT(emptno) FROM emp
注意事项二
在统计查询中,SELECT子句后只允许出现分组字段和统计函数,而其他的非分组字段不能使用。
例如:SELECT deptno,ename,COUNT(emptno) FROM emp GROUP BY deptno
注意事项三
在Oracle当中统计函数允许嵌套使用,但嵌套统计函数之后的SELECT子句不允许在出现任何的字段,包括分组字段。

对于WHERE 和 HAVING 子句,都是用来进行条件过滤的。但是又有区别,区别如下:
WHERE 子句::是在分组之前使用,表示从所有数据中筛选出部分数据,已完成分组的要求,在WHERE子句中不允许 使用统计函数,没有GROUP BY 子句也能使用。

HAVING 子句:是在分组之后使用的,表示对分组统计后的数据执行再次过滤,可以使用统计函数,有GROUP BY 子句之后才可出现HAVING 子句

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值