分组查询

/*

语法:

select 查询列表

from 表

【where 筛选条件】

group by 分组的字段

【order by 排序的字段】;

特点:

1、和分组函数一同查询的字段必须是group by后出现的字段

2、筛选分为两类:分组前筛选和分组后筛选

针对的表       位置        连接的关键字

分组前筛选 原始表     group by前         where

分组后筛选 group by后的结果集    group by后         having

问题1:分组函数做筛选能不能放在where后面

答:不能

问题2:where——group by——having

一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率

3、分组可以按单个字段也可以按多个字段

4、可以搭配着排序使用

*/

#引入:查询每个部门的员工个数

SELECT COUNT(*) FROM employees WHERE department_id=90;

#1.简单的分组

#案例1:查询每个工种的员工平均工资

SELECT AVG(salary),job_id

FROM employees

GROUP BY job_id;

#案例2:查询每个位置的部门个数

SELECT COUNT(*),location_id

FROM departments

GROUP BY location_id;

#2、可以实现分组前的筛选

#案例1:查询邮箱中包含a字符的 每个部门的最高工资

SELECT MAX(salary),department_id

FROM employees

WHERE email LIKE '%a%'

GROUP BY department_id;

#案例2:查询有奖金的每个领导手下员工的平均工资

SELECT AVG(salary),manager_id

FROM employees

WHERE commission_pct IS NOT NULL

GROUP BY manager_id;

#3、分组后筛选

#案例:查询哪个部门的员工个数>5

#①查询每个部门的员工个数

SELECT COUNT(*),department_id

FROM employees

GROUP BY department_id;

#② 筛选刚才①结果

SELECT COUNT(*),department_id

FROM employees

GROUP BY department_id

HAVING COUNT(*)>5;

#案例2:每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

SELECT job_id,MAX(salary)

FROM employees

WHERE commission_pct IS NOT NULL

GROUP BY job_id

HAVING MAX(salary)>12000;

#案例3:领导编号>102的每个领导手下的最低工资大于5000的领导编号和最低工资manager_id>102

SELECT manager_id,MIN(salary)

FROM employees

GROUP BY manager_id

HAVING MIN(salary)>5000;

#4.添加排序

#案例:每个工种有奖金的员工的最高工资>6000的工种编号和最高工资,按最高工资升序

SELECT job_id,MAX(salary) m

FROM employees

WHERE commission_pct IS NOT NULL

GROUP BY job_id

HAVING m>6000

ORDER BY m ;

#5.按多个字段分组

#案例:查询每个工种每个部门的最低工资,并按最低工资降序

SELECT MIN(salary),job_id,department_id

FROM employees

GROUP BY department_id,job_id

ORDER BY MIN(salary) DESC;

mysql 分组_mysql分组查询(总结)相关推荐

  1. mysql 数组 分组_mysql分组查询数组

    mysql分组查询数组 - 技术改变生活 - 开源中国社区 首页 开源项目 Java 开源软件 C# 开源软件 PHP 开源软件 C/C++ 开源软件 Ruby 开源软件 Python 开源软件 Go ...

  2. mysql根据姓分组_mysql 分组查询 group by

    创建一个表 表名:xl select * from xl: 分组之后,按照分组的字段,只会显示一个 通过性别sex分组 select * from xl group by sex: 通过prold分组 ...

  3. mysql 随机分组_MySql分组后随机获取每组一条数据的操作

    MySql分组后随机获取每组一条数据的操作,数据,效率,时间,李四,条数 MySql分组后随机获取每组一条数据的操作 易采站长站,站长之家为您整理了MySql分组后随机获取每组一条数据的操作的相关内容 ...

  4. mysql先过滤后分组_MySQL分组过滤

    使用HAVING字句对分组结果进行过滤. 示例 有一个表格socre_sheet: mysql> SELECT * FROM score_sheet; +----+--------+------ ...

  5. mysql 随机分组_mysql分组

    这种需求,我想很多人都遇到过.下面是我模拟我的内容表我现在需要取出每个分类中最新的内容 select * from test group by category_id order by `date` ...

  6. mysql去重分组_mysql 分组 去重

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  7. mysql 行合并 分组_mysql分组并多行拼接--group_concat和group by的使用

    – 创建表结构 DROP TABLE IF EXISTS exe; CREATE TABLE exe ( id int(3) NOT NULL, type int(3) default NULL, n ...

  8. oracle分组_MySQL分组取TOP,实现Oracle的ROW_NUMBER函数的功能

    Excel中分组排序只需要对数据进行升序降序,再利用if函数添加排序序号,即可筛选出分组top数据. Oracle也有row_number()函数对数据进行分组排序,而MySQL并没有此类函数,那么如 ...

  9. mysql 切分_MySQL切分查询用法分析

    本文实例讲述了MySQL切分查询用法.分享给大家供大家参考,具体如下: 对于大查询有时需要'分而治之',将大查询切分为小查询: 每个查询功能完全一样,但只完成原来的一小部分,每次查询只返回一小部分结果 ...

最新文章

  1. YOLO v1到YOLO v4(上)
  2. 扑克牌图片一张一张_Python 制作一副扑克牌,有趣的案例
  3. 赠书:分布式系统中的监控怎么做?
  4. Vue引用其他组件,但组件某些部分不需要时的简单处理
  5. NTU课程笔记 CE7454 (3):MLPCNN
  6. [architecture]-Armv8 Cryptographic Extension介绍
  7. 【linux高级程序设计】(第十二章)Linux多线程编程 4
  8. eclipse插件egit安装使用
  9. 平稳序列的拟合和预测之序列的预测
  10. 微信小程序之WebSocket
  11. 控制器设计:MIPS单周期CPU
  12. windows 一键切换ip dns脚本
  13. IE浏览器怎么查看cookie
  14. SOFA原理学习--sofa rpc入门示例
  15. 鼠标按下并移动事件的解决方案
  16. python 提取元组中的值_如何从Python元组中提取数据?
  17. 如何创建一个 react 项目及如何运行?
  18. android火焰图分析,android实现简单的火焰效果
  19. 离线翻译软件【免费电脑版】
  20. Python 语言中的骚操作

热门文章

  1. TensorRT(2)-基本使用:mnist手写体识别
  2. 分析:“AI on Hadoop”有意义吗?
  3. 《Ruby程序员修炼之道》(第2版)目录—导读
  4. Python中lambda使用简易教程
  5. 深拷贝与浅拷贝(mutableCopy与Copy)详解 iOS
  6. mysql fabric安装使用测试
  7. 我的cookie读写
  8. ASP.NET【4】--ASHX
  9. Dynamips 简介
  10. shell变成中的测试语句