目录

一、分组显示,不聚集

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)相关推荐

  1. mysql对标准sql的扩展_mysql对标准sql的goup by进行了扩展

    标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...

  2. go 获得 mysql 实际运行 SQL_mysql对标准sql的goup by进行了扩展 | 学步园

    标准SQL语法中,对SELECT语句执行GROUP BY操作的话,SELECT选择的列必须出现在GROUP BY子句中,也就是说先要明确根据什么分组,然后才能选择分没分组.不过MySQL数据库不完全是 ...

  3. Oracle分组函数

    SQL> --avg,count,max,min,sum举例 SQL> --统计员工个数 SQL> select count(*) from emp; COUNT(*)        ...

  4. oracle中mybatis查询使用group by 和oder导致rownum混乱,查不到排序前10的数

    出现问题原因: 项目中需要查询出排行前10的api调用量,使用的这条sql 错误示范: select APP_NAME,API_NAME,TIMES(select API_Key_ID,APP_ID, ...

  5. java 必备面试必备

    1.JDK 和 JRE 有什么区别? JDK(Java Development Kit),Java开发工具包 JRE(Java Runtime Environment),Java运行环境 JDK中包含 ...

  6. 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 ...

  7. 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 ...

  8. 【SQL】分组数据,过滤分组-group by , having

    学习笔记,原文来自http://blog.csdn.net/robinjwong/article/details/24845125 创建分组 - GROUP BY 分组是在SELECT语句的GROUP ...

  9. SQL学习八、分组数据

    我们在查询数据时经常会根据数据的某一特性进行分类获取,这就是这篇文章要记录的两个SELECT的子句:GROUP BY 和HAVING子句. GROUP BY 其实我们在上一篇文章中已经使用了GROUP ...

最新文章

  1. mySQL优化 my.ini 配置说明
  2. day1-Python擅长的领域+学习内容
  3. 苹果学生购机优惠_送AirPods!苹果暑季学生优惠收MacBook Air+AirPods
  4. .net core 5 IIS Api网站部署需要注意
  5. go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
  6. c语言鼠标环绕特效,C语言写的鼠标有残影,急需解决方案,在线等待!
  7. Docker - 安装并持久化PostgreSQL数据
  8. php面试专题---MySQL常用SQL语句优化
  9. 如何去掉自动弹出IE9介绍页
  10. uva 1329(加权并查集)
  11. 智能优化算法应用:基于麻雀搜索算法的积分计算 -附代码
  12. 云计算 third day
  13. 【高数复盘】1.1映射与函数思维导图
  14. 如何在页面上预览word
  15. 二叉树非递归遍历算法
  16. java4android 教程_《Java4Android视频教程》学习笔记(三)
  17. openlayers动态添加自定义div图层 具有筛选功能 和浮窗
  18. nginx出现403错误的解决方法(亲测有效)
  19. 高考状元、奥赛金牌,清华姚班00后新生来了
  20. maven打包带依赖和瘦包

热门文章

  1. Matlab 激活,反激活
  2. python迷宫小游戏代码_6.1 | 童年的游戏,Python一行代码就能玩
  3. python 凯撒加密
  4. 7款程序员实用工具,老少皆宜,你一定用得上
  5. PLS-DA中的LV(潜在变量)数量
  6. 2022-2028全球Webtoon自助发布平台行业调研及趋势分析报告
  7. 织梦php如何完全卸载,DEDE织梦CMS后台精简可以删掉的不需要的文件
  8. 未来5G物联网的安全形态,看英飞凌eSIM
  9. adb 测试手机内存 cpu 以及几种方式对比
  10. 理解Java ClassLoader机制 |用Java说话,人气战胜时间!Come On