详解在group by分组查询中where 和 having的用法和区别。
而且having 一般和group by 一齐使用, 但是where 也可以用group by 一齐使用的。
下面用个简单例子讲解下:
有一张分数表Grade_1, 3个column 分别是 dep, name 和 grade, 如下图,好明显可以用部门dep来分组. 表中总共9条数据
下面语句是用来列出所有部门的总分。 并没有用到where 和 having 字句。
select dep as Dep,sum(grade) as Sum_gradefrom Grade_1group by dep
可以见到3个组的总分都列出来了。 呢个唔难理解。
where 子句:
下面用1个where字句, 意思是列出所有部门分数大于或等于60分的人的总分
select dep as Dep,sum(grade) as Sum_gradefrom Grade_1where grade >= 60group by dep
可以见到, 部门1 和 部门2的总分 都比上面的总分数减少了
是因为 where字句的作用, 语句在分组前 把第1组的 Allen(40分)
和 第二组的piero (45分) 排除掉了。
第一组和第二组实际上都是其余两个人的总分,
所以可总结出:
1. where字句用在group by之前。
2. where 作用于单个记录(行)
3. where 作用生效后(筛选后), group by分组才生效, 也就是where字句作用于 group by 之前。
Having 子句:
下面用1个Having字句, 意思是列出最低分数大于40的部门的总分
select dep as Dep,sum(grade) as Sum_gradefrom Grade_1 group by dephaving min(grade) > 40
可以见到 结果把整个第一组排除出去了, 是因为
第一组有个人Allen的分数不大于40 也就是说 第一组的最低分是40, 不符合条件。
所以可总结出:
1. having 字句用在group by之后。
2. having 字句 作用于单个组(1行或多行)
3. group by 分组后, 才用having 子句来分组, 所以having字句作用在分组之后。
where 和 having 子句一齐使用:
下面语句就是上面两个条件一齐使用,
select dep as Dep,sum(grade) as Sum_gradefrom Grade_1where grade >= 60group by dephaving min(grade) > 40
可以见到第一组又出来了, 之前不是说第一组的最低分是40吗?
答案都好简单,因为分组前 where字句先起作用, 把分数小于60的数据都排除出去了,
分组后
当having子句起作用时, 第一分组已经不包含小于60的数据(Allen), 所以第一分组这是的最低分是60(Jason),符合条件拉!
详解在group by分组查询中where 和 having的用法和区别。相关推荐
- SQL之Join的使用详解(附 :分组查询每组前N条记录)
一.基本概念 关于sql语句中的连接(join)关键字,是较为常用而又不太容易理解的关键字,下面这个例子给出了一个简单的解释 –建表user1,user2: table1 : create table ...
- java中mysql分组查询_ES对应mysql的group by分组查询javaApi,多对多关系的分组查询...
ES对应mysql的group by分组查询javaApi,多对多关系的分组查询 比如我这边有个下列订单索引数据,现在的需求是按用户(fmerchantId)和支付方式(fchannelId)进行分组 ...
- nslookup 包含在那个包中_nslookup详解(name server lookup)( 域名查询)
一.总结 1.爬虫倒是很方便拿到页面数据:a.网页的页面源码我们可以轻松获得 b.比如cnsd博客,文章的正文内容全部放在当中,所以非常好获取,此时我们获取的是html的页面 c.html的数据自带 ...
- 斯坦福NLP名课带学详解 | CS224n 第10讲 - NLP中的问答系统(NLP通关指南·完结)
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...
- 斯坦福NLP名课带学详解 | CS224n 第11讲 - NLP中的卷积神经网络(NLP通关指南·完结)
作者:韩信子@ShowMeAI,路遥@ShowMeAI,奇异果@ShowMeAI 教程地址:https://www.showmeai.tech/tutorials/36 本文地址:https://ww ...
- 详解音视频直播平台搭建中的低延时
详解音视频直播平台搭建中的低延时 音视频实时通讯的应用场景已经随处可见,从"吃鸡"的语音对讲.直播连麦.直播答题组队开黑,再到银行视频开户等.对于开发者来讲,除了关注如何能快速实现 ...
- 详解JPA 2.0动态查询机制:Criteria API
转载自详解JPA 2.0动态查询机制:Criteria API-51CTO.若有侵权,请留言删除. 自从 JPA 于 2006 年首次被引入之后,它就得到了 Java 开发社区的广泛支持.该规范的下一 ...
- 详解JPA 2.0动态查询机制:Criteria API(2)
详解JPA 2.0动态查询机制:Criteria API(2) 2009-11-13 09:24 Pinaki Poddar IBMDW 字号:T | T JPA 2.0引入了 Criteria AP ...
- mysql教程详解之多表联合查询_详解数据库多表连接查询的实现方法
详解数据库多表连接查询的实现方法 通过连接运算符可以实现多个表查询.连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志. 在关系数据库管理系统中,表建立时各数据之间的关系不必 ...
最新文章
- Apache MINA 2.0 用户指南
- YOLO 卷积层代码学习
- d3中文案例_D3.js柱状图例子
- maven安装以及eclipse配置maven
- Idea Maven报错找不到程序包
- WP7技巧 扩展【共享...】按钮
- 单个雪碧图多个图像资源你该如何解决它们的定位?
- 魅族 linux 手机,魅族flyme开源,能否再现linux辉煌,为什么要开源
- 重磅分享(二)——决策引擎实战部署
- auto_ptr个人用
- HashMap 排序题
- clonezilla使用_如何使用Clonezilla备份和恢复已死或即将死去的系统磁盘
- 机器人零力拖动技术路线
- wamp php打不开,wamp无法打开phpmyadmin
- maven 本地仓库的配置以及如何修改默认.m2仓库位置
- R语言入门——高质量保存图片(想毕业咋就那么难!!!)
- 20230419心情随记
- 餐饮数据的分析与挖掘(1)——数据采集
- 百度电子地图自定义marker图标
- 手持式设备产品的设计与交互
热门文章
- [专栏目录]-ATF/FF-A/specification学习 -- ongoing
- [ARM-assembly]-A64指令集合总结
- C++日志系统log4cxx使用总结
- Python编程实现粒子群算法(PSO)详解
- Windows驱动开发学习笔记(三)—— 内核空间内核模块
- MySQL配置教程(图解版)
- prometheus rfc3339 php date 转换
- xampp for Ubuntu安装.run文件
- 1.18 StringBuffer替换特殊字符
- Spring boot转发请求