初识Mysql(part11)--我需要知道的4条Mysql语句之分组
学习笔记,以代码和例子堆砌而成,方便查阅。
参考书籍:《Mysql必知必会》等
要点:GROUP BY子句、HAVING关键字
此Blog里的例子都会用下面grouping数据表:
# id, pro_version, price, pro_num
'1', '101', '20', '500'
'2', '101', '2', '1000'
'3', '101', '3', '250'
'4', '101', '10', '300'
'5', '102', '5', '200'
'6', '102', '3', '100'
'7', '103', '100', '30'
按照pro_version分组,并计算每组的个数。
SELECT pro_version,COUNT(*) AS num_prods FROM grouping GROUP BY pro_version;
输出:
# pro_version, num_prods
'101', '4'
'102', '2'
'103', '1'
对于GROUP BY我萌需要注意的是:
①GROUP BY子句可以包含任意数目的列,这使得能对分组进行嵌套,对分组进行更为细致的控制。
②GROUP BY子句中的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式,不能使用别名。
③除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY字句中给出。
④如果分组列中有NULL值,则NULL将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。
⑤GROUP BY子句在WHERE子句之后,且在ORDER BY子句之前。
按照pro_version分组,计算每组的个数,并筛选出组数大于等于2的组。
SELECT pro_version,COUNT(*) AS num_prods FROM grouping GROUP BY pro_version HAVING COUNT(*)>=2;
输出:
# pro_version, num_prods
'101', '4'
'102', '2'
检索出price大于等于10的行,并将其按照pro_version分组,计算每组的个数,筛选出组数大于等于2的组。
SELECT pro_version, COUNT(*) AS num_prods FROM grouping WHERE price>=10 GROUP BY pro_version HAVING COUNT(*)>=2;
输出:
# pro_version, num_prods
'101', '2'
HAVING和WHERE非常类似,我们前几个part的Blog介绍的关于WHERE的技术都适用于HAVING,WHERE一般用于过滤行,而HAVING过滤分组。WHERE在数据分组前进行过滤,而HAVING在数据分组后进行过滤。
按照pro_version分组,计算每组price*pro_num
总和,并筛选出price*pro_num
总和大于等于2000的组,最后按price*pro_num
总和的升序排列。
SELECT pro_version,SUM(price*pro_num) AS total FROM grouping GROUP BY pro_version HAVING SUM(price*pro_num)>=2000 ORDER BY total;
输出:
# pro_version, total
'103', '3000'
'101', '15750'
SELECT子句及其顺序:
子句 | 说明 |
---|---|
SELECT | 要返回的列或表达式 |
FROM | 从中检索数据的表 |
WHERE | 行级过滤 |
GROUP BY | 分组说明 |
HAVING | 组级过滤 |
ORDER BY | 输出顺序数据 |
LIMIT | 要检索的行数 |
初识Mysql(part11)--我需要知道的4条Mysql语句之分组相关推荐
- 初识Mysql(part19)--我需要知道的3条Mysql语句之组合查询
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:UNION.UNION ALL 此Blog会用到下面2个表. temp_product2: # id, ...
- 初识Mysql(part17)--我需要知道的3条Mysql语句之联结
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:联结.INNER JOIN.ON关键字 此Blog会用到下面3个表. temp_store表: # p ...
- 初识Mysql(part16)--我需要知道的2条Mysql语句之子查询
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 此Blog会用到下面3个表. temp_store表: # pr_id, store_num '1001', ...
- 初识Mysql(part15)--我需要知道的4条Mysql语句之操作表
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:ALTER关键字.RENAME关键字.DROP关键字.ADD关键字 此Blog里的例子都会用下面的te ...
- 初识Mysql(part13)--我需要知道的7条Mysql语句之更新和删除数据
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:UPDATE关键字.IGNORE关键字.DELETE关键字.TRUNCATE TABLE语句 此Blo ...
- 初识Mysql(part12)--我需要知道的3条Mysql语句之插入数据
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:INSERT INTO子句 此Blog里的例子都会用下面的grouping表和grouping2表. ...
- 初识Mysql(part6)--我需要知道的4条Mysql语句之利用通配符过滤
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:LIKE关键字.通配符%.通配符_ 此Blog里的例子都会用下面store数据表: # id, pro ...
- 初识Mysql(part5)--我需要知道的11条Mysql语句之过滤
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:WHERE关键字.AND关键字.OR关键字.IS关键字.IN关键字 此Blog里的例子都会用下面int ...
- 初识Mysql(part4)--我需要知道的5条Mysql语句之排序
学习笔记,以代码和例子堆砌而成,方便查阅. 参考书籍:<Mysql必知必会>等 要点:ORDER关键字.DESC关键字 按照price的大小对name和price列进行排序(默认升序). ...
最新文章
- 计算机硬件大型作业报告,计算机硬件技术大作业报告.doc
- Oracle 11g R2 RAC 高可用连接特性
- AliOS Things 硬件抽象层(HAL)对接系列2 — SPI driver porting
- java dump命令例子,常用命令示例
- Channel Allocation HDU1373
- android listview mapview,RelativeLayout和并列ListView/MapView
- 关于runc漏洞CVE-2019-5736的修复公告
- page compaction代码分析之一
- 网络是怎样连接的学习笔记1----探索浏览器内部(十分适合理清思路)
- 2008年全国计算机软考程序员考试大纲
- linux exosip编译,eXosip2 osip 编译安装
- 戴尔3080计算机重装系统步骤,终于发现戴尔笔记本重装系统的方法
- 区域卫生信息平台建设的“用友基因”
- TalkingData三大产品创新,引领2022数字营销技术新格局
- android聊天室背景图片,32张漂亮的自然风光微信7.0聊天背景图片推荐 唯美自然风景手机壁纸 (全文)...
- 使用Hexo 在本地搭建博客(一)
- OneZero第四周第二次站立会议(2016.4.12)
- 微信小程序九宫格预览+单张图片预览
- 优秀IT项目经理的基本要求
- 不同的经络,不同的线程
热门文章
- 微力同步linux,云端同步软件-微力同步下载 v2.4.3 官方版 - 下载吧
- types是什么意思中文翻译成_types 和 @types 是什么?
- Extjs09 双击事件
- Eclipse配置自动提示(eclipse设置代码API自动出现)
- python中可以作为定界符_在 Python 中,字典和集合都是用一对 作为定界符,字典的每个元素有两部分组成,即 和 ,其中 不允许重复。_学小易找答案...
- SpringBoot+webservice
- PPT幻灯片转换成word的软件
- 在RelativeLayout中对控件的显示隐藏操作问题
- 无线路由器参数设置精通技巧
- applyDimension的用法