SQL语法(三) 分组和筛选
前言
本章将学习sql分组及筛选。
范例
1.分组查询
--关键字:group by 分组字段名,分组字段名....
--注意1:使用了分组后,在select语句中只允许出现分组字段和多行函数。
--注意2:如果是多字段分组,则先按照第一字段分组,然后每个小组继续按照第二个字段继续分组,以此类推。
--注意3:在where子句中不允许出现多行函数。
2.分组筛选
--关键字:having
--作用:针对分组进行分组后的数据筛选,允许使用多行函数。
--注意:having关键必须和分组结合使用。不允许单独使用。
--where和having的比较:
--where子句不允许出现多行函数,having允许出现多行函数
--where子句和having都可以使用普通字段直接进行筛选,但是where的效率高于having
--where执行顺序: from--->where--->group by-->select-->order by
--having执行顺序:from--->group by-->select--->having--->order by
--结论:在分组语句中,使用where进行字段级别的筛选,使用having进行多行函数的筛选。
3.SQL查询语句的结构
--select 子句 要查询的数据(oracle函数,别名,连接符,去除重复,逻辑运算)
--from语句 决定要查询的表(表名)
--where子句 筛选数据(筛选条件,关键字)
--group by子句 分组 (分组字段)
--having子句 分组筛选 (多行函数筛选条件)
--order by子句 排序 (排序)
--from-->where--->group by-->select--->having--->order by
附录:分组和筛选示例
--分组查询
--group by 分组字段
--查询全部员工信息
select * from emp;
--查询每个单位下的员工数量
select deptno,count(*) from emp group by deptno;
--注意1:使用了分组以后,在select语句中只能出现分组字段和多行函数
--注意2:使用了多字段分组后,先按照第一个字段进行分组,然后每个小组继续按照第二个字段继续分组,以此类推
--注意3:在where子句中,不允许出现多行函数
--分组查询每个单位下的员工数量且单位数量大于3
select deptno,count(*) from emp group by deptno ;--无法实现--分组筛选
--having 条件
----分组查询每个单位下的员工数量且单位数量大于3
select deptno,count(*) from emp group by deptno having count(*)>3;
--注意1:having必须和group by组合使用,不允许单独使用
--注意2:where和having的区别:
--查询单位id为20或30的员工信息且进行分组查询每个单位下的员工数量且单位数量大于3
select deptno,count(*) from emp group by deptno having count(*)>3 and deptno in ('20','30');
select deptno,count(*) from emp where deptno in ('20','30') group by deptno having count(*)>3 order by deptno asc;--区别:
--where子句不允许出现多行函数,而having允许
--where的查询效率要高于having
--结论
--where 进行字段级别的筛选,having 进行多行函数的筛选--SQL语句执行顺序
--from-->where-->group by-->select-->having-->order by
附录:操作视频
SQL之分组和筛选
SQL语法(三) 分组和筛选相关推荐
- SQL语法之分组函数,分组查询(进阶5)and连接查询(sql92语法进阶6)
SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...
- SQL语法之排序查询(进阶3)and常见函数(进阶4)
SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...
- SQL语法之基础查询(进阶1)and条件查询(进阶2)
SQL语法体系学习笔记 SQL语法之基础查询(进阶1)and条件查询(进阶2) SQL语法之排序查询(进阶3)and常见函数(进阶4) SQL语法之分组函数,分组查询(进阶5)and连接查询(sql9 ...
- sql 排序 分组 层级 筛选 - God聚会啊
前言: 以前做过2种列表,1是有排序,有筛选功能,但是没有层级和分组,2是有树形结构的层级和分组,但是数据是一下全部加载出来,虽然有点落后,没有用到分页加载,但是也是受制于大环境. 今天有1个需求是 ...
- oracle sql 平均分配 分组_SQL学习二
训练大纲(第023天) 大家如果想快速有效的学习,思想核心是"以建立知识体系为核心",具体方法是"守破离".确保老师课堂上做的操作,反复练习直到熟练. 第41次 ...
- LINQ To SQL 语法及实例大全
LINQ to SQL语句(1)之Where Where操作 适用场景:实现过滤,查询等功能. 说明:与SQL命令中的Where作用相似,都是起到范围限定也就是过滤作用的,而判断条件就是它后面所接的子 ...
- SQL——语法基础篇(上)
虽然 SQL 是声明式语言,我们可以像使用英语一样使用它,不过在 RDBMS(关系型数据库管理系统)中,SQL 的实现方式还是有差别的.今天我们就从数据库的角度来思考一下 SQL 是如何被执行的. O ...
- 关系代数和SQL语法
数据分析的语言接口 OLAP计算引擎是一架机器,而操作这架机器的是编程语言.使用者通过特定语言告诉计算引擎,需要读取哪些数据.以及需要进行什么样的计算.编程语言有很多种,任何人都可以设计出一门编程语言 ...
- MySQL理论基础以及sql语法
本文章目标: 1.了解基础理论 2.必须会写sql语句(重点是查询语句) 碎碎念: mysql下载安装最好的教程之一,想当年我大一啥也不懂,装MySQL装了一个星期还是失败,呜呜呜呜,联系了这个博客的 ...
最新文章
- 【puthon】把大量csv文件写入h5文件制作数据集
- 关于cocos2d的下载和安装
- asp.net播放声音
- 搭建本地LNMP开发环境(1)-VMware内安装debian
- C++虚成员函数表vtable
- 统计自然语言处理笔记
- 如何处理 android 方法总数超过 65536 . the number of method references in a .dex file exceed 64k
- ssh(Spring+Spring mvc+hibernate)——hibernate.cfg.xml
- 王爽 汇编语言第三版 第11章 标志寄存器
- 安装ssr_网易《代号SSR》电脑版教程!
- python月份字符串_python实现字符串和日期相互转换的方法
- windows认证密码抓取
- 把所有数据库厂商拉在一起,会发生什么?
- 智课雅思词汇---七、cur是什么意思
- vector subscript out of range数组下标越界错误
- 正在开启,一名金融猎头的二十年 | 专访伯乐百万金融顾问 Leslie Xu
- jumpserver
- 贪心、动态规划:钢条切割
- rn 滑动验证_rn-fetch-blob
- linux下终端urvst,Linux中的静态库与动态库
热门文章
- Electron Vue 打包错误: InvalidConfigurationError: ‘build‘ in the application package.json
- Microsoft Data Access Components(MDAC) version 2.6 or later
- VAIO系统自带的娱乐媒体应用软件
- U880纯GPS定位综合解决方案,支持谷歌地图老虎地图百度地图
- 我国将投巨资开发网游 抵制进口垄断!
- 前端生成海报图:html2canvas 生成海报图/网页html转图片
- [画质提高30%利器]暴风5本地左眼爆破
- 太赫兹芯片是什么原理_芯片测试的颠覆者:太赫兹准光技术
- Jmeter 监控cpu、内存、io
- ParameterizedType获取java泛型参数类型