MySQL----分组查询

我会带着你远行 2023-02-20 10:52 67阅读 0赞

序言: 致每一位读者:你们好! 我叫 Changlon [昌龙] ; 是和各位一样奔跑在编程道路上,期望用编程改变世界,改善生活的奔跑者。

写文章的初心: 方便以后复习,方便未来面试,结交更多道友,交流心得经验…

如果你也对前端 , Java , C/C++, 算法, 人工智能 感兴趣那就关注我吧!我们一起学习进步!

相关文章
点击查看 MySQL系列文章

常见函数
连接查询

文章目录

  • 一、语法
  • 二、特点
  • 三、案例
    • 1) 查询平均数据
    • 2)查询个数
    • 3)分组前筛选
    • 4) 分组后的筛选
  • 四、总结

一、语法

  1. select 分组函数,分组后的字段
  2. from
  3. where 筛选条件】
  4. group by 分组的字段
  5. having 分组后的筛选】
  6. order by 排序列表】

二、特点

  • 和分组函数一同查询的字段必须是group by后出现的字段
    在这里插入图片描述
  • 筛选分为两类:分组前筛选和分组后筛选























针对的表 位置 连接的关键字
分组前筛选 原始表 group by前 where
分组后筛选 group by后的结果集 group by后 having
  • 分组可以按单个字段也可以按多个字段
  • 可以搭配着排序使用

三、案例

1) 查询平均数据

  1. #案例1:查询每个工种的员工平均工资
  2. SELECT AVG(salary),job_id
  3. FROM employees
  4. GROUP BY job_id;

2)查询个数

  1. #案例2:查询每个位置的部门个数
  2. SELECT COUNT(*),location_id
  3. FROM departments
  4. GROUP BY location_id;

3)分组前筛选

  1. #案例3:查询邮箱中包含a字符的 每个部门的最高工资
  2. SELECT MAX(salary),department_id 4->第四步
  3. FROM employees 1->第一步
  4. WHERE email LIKE '%a%' 2 ->第二步
  5. GROUP BY department_id; 3->第三步

4) 分组后的筛选

  1. #案例4:每个工种有奖金的员工的最高工资>12000的工种编号和最高工资
  2. SELECT job_id,MAX(salary) 5
  3. FROM employees 1
  4. WHERE commission_pct IS NOT NULL 2
  5. GROUP BY job_id 3
  6. HAVING MAX(salary)>12000; 4

四、总结

问题1:分组函数做筛选能不能放在where后面 答:不能
问题2: where——group by——having
一般来讲,能用分组前筛选的,尽量使用分组前筛选,提高效率


由于本人技术水平有限,博客中难免出现的一些错误,有纰漏之处恳请各位大佬不吝赐教!

发表评论

表情:
评论列表 (有 0 条评论,67人围观)

还没有评论,来说两句吧...

相关阅读

    相关 MySQL 分组查询

    MySQL SELECT 语句,允许使用 GROUP BY 子句,将结果集中的数据行根据选择列的值进行逻辑分组,以便能汇总表内容的子集,实现对每个组而不是对整个结果集进行整合。