SQL—分组数据(GOUP BY)
目录
一、分组显示,不聚集
1、对一个字段分组
2、对两个字段分组 (可理解成父类与子类)
二、与聚集函数count结合使用
1、只对一个字段分组时的计数
2、两个字段时对子类计数
三、过滤分组(HAVING)
1、HAVING的单条件与多条件过滤
2、HAVING与WHERE结合使用
3、分组与排序
一、分组显示,不聚集
1、对一个字段分组
SELECT * FROM data.analyse
group by city; -- 随机挑选每个城市其中之一展示
???如果只返回城市列,且不重复,即想知道表中一个涉及哪些城市的数据,有两种方法
方一:使用DISTINCT关键字
SELECT DISTINCT city FROM data.analyse;
方二:用SELECT语句检索城市列,并用GROUP BY 函数分组
SELECT * city,education from data.analyse
group by city;
2、对两个字段分组 (可理解成父类与子类)
SELECT * FROM data.analyse
group by city,education
ORDER BY city; -- 展示每个城市招聘的学历类别
二、与聚集函数count结合使用
1、只对一个字段分组时的计数
返回每个分组的数量
SELECT city,count(positionId),count(1),count(*) ,count(city)FROM data.analyse
group by city; -- 对每个城市计数
SELECT city,count(positionId),count(DISTINCT companyId) FROM data.analyse
group by city; -- 每个城市招聘的职位有多少,招聘的公司有多少
注意:使用DISTINCT函数来去重
2、两个字段时对子类计数
SELECT city,
education,
count(1) FROM data.analyse
group by city,education
ORDER BY city; -- 展示每个城市招聘的学历类别并对分类学历计数
三、过滤分组(HAVING)
- HAVING支持所有WHERE的操作符
- 与WHERE的区别:WHERE过滤行,而HAIVNG过滤分组。WHERE在数据分区前进行过滤,HAVING在分组后进行过滤
- 对分组进行多重过滤用AND
1、HAVING的单条件与多条件过滤
SELECT city,count(positionId) FROM data.analyse
group by city
HAVING count(positionId)>=200; -- 用having与count结合使用过滤出招聘职位大于200个的城市-- 也可以这样写
SELECT city,count(positionId) AS position_num FROM data.analyse
group by city
HAVING position_num>=200;-- 用and进行多条件过滤
SELECT city,count(positionId) AS position_num FROM data.analyse
group by city
HAVING position_num>=200 AND position_num<=500;
2、HAVING与WHERE结合使用
与WHERE连用,即先行过滤,再分组,再进行分组过滤
-- 与WHERE连用,即先行过滤,再分组,再分组过滤
SELECT city,count(positionId) AS position_num FROM data.analyse
WHERE industryField LIKE "%电子商务%" -- 先过滤出industryField里含有“电子商务”的所有行
group by city -- 再对剩余的行按城市分组
HAVING position_num>=50; -- 最后挑选出职位数大于50的城市
也可以不用WHERE ,直接使用count的嵌套过滤,count和if经常一起嵌套使用
SELECT city,count(if(industryField LIKE "%电子商务%",industryField,NULL)) --COUNT计数为包含“电子商务”的城市数量
AS position_num
FROM data.analyse
group by city
HAVING position_num>=50;
3、分组与排序
一般在使用GROUP BY 子句时,应该也给出ORDER BY子句,保证数据正确排序,不要仅依赖于GROUP BY 的自身排序。
SQL—分组数据(GOUP BY)相关推荐
- mysql对标准sql的扩展_mysql对标准sql的goup by进行了扩展
标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...
- go 获得 mysql 实际运行 SQL_mysql对标准sql的goup by进行了扩展 | 学步园
标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...
- Oracle分组函数
SQL> --avg,count,max,min,sum举例 SQL> --统计员工个数 SQL> select count(*) from emp; COUNT(*) ...
- oracle中mybatis查询使用group by 和oder导致rownum混乱,查不到排序前10的数
出现问题原因: 项目中需要查询出排行前10的api调用量,使用的这条sql 错误示范: select APP_NAME,API_NAME,TIMES(select API_Key_ID,APP_ID, ...
- java 必备面试必备
1.JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含 ...
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化...
1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) from ...
- 6.组函数(avg(),sum(),max(),min(),count())、多行函数,分组数据(group by,求各部门的平均工资),分组过滤(having和where),sql优化
1组函数 avg(),sum(),max(),min(),count()案例: selectavg(sal),sum(sal),max(sal),min(sal),count(sal) from ...
- 【SQL】分组数据,过滤分组-group by , having
学习笔记,原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP ...
- SQL学习八、分组数据
我们在查询数据时经常会根据数据的某一特性进行分类获取,这就是这篇文章要记录的两个SELECT的子句:GROUP BY 和HAVING子句. GROUP BY 其实我们在上一篇文章中已经使用了GROUP ...
最新文章
- mySQL优化 my.ini 配置说明
- day1-Python擅长的领域+学习内容
- 苹果学生购机优惠_送AirPods!苹果暑季学生优惠收MacBook Air+AirPods
- .net core 5 IIS Api网站部署需要注意
- go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
- c语言鼠标环绕特效,C语言写的鼠标有残影,急需解决方案,在线等待!
- Docker - 安装并持久化PostgreSQL数据
- php面试专题---MySQL常用SQL语句优化
- 如何去掉自动弹出IE9介绍页
- uva 1329(加权并查集)
- 智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
- 云计算 third day
- 【高数复盘】1.1映射与函数思维导图
- 如何在页面上预览word
- 二叉树非递归遍历算法
- java4android 教程_《Java4Android视频教程》学习笔记(三)
- openlayers动态添加自定义div图层 具有筛选功能 和浮窗
- nginx出现403错误的解决方法(亲测有效)
- 高考状元、奥赛金牌,清华姚班00后新生来了
- maven打包带依赖和瘦包
热门文章
- Matlab 激活,反激活
- python迷宫小游戏代码_6.1 | 童年的游戏,Python一行代码就能玩
- python 凯撒加密
- 7款程序员实用工具,老少皆宜,你一定用得上
- PLS-DA中的LV(潜在变量)数量
- 2022-2028全球Webtoon自助发布平台行业调研及趋势分析报告
- 织梦php如何完全卸载,DEDE织梦CMS后台精简可以删掉的不需要的文件
- 未来5G物联网的安全形态,看英飞凌eSIM
- adb 测试手机内存 cpu 以及几种方式对比
- 理解Java ClassLoader机制 |用Java说话,人气战胜时间!Come On