登录
首页 >  数据库 >  MySQL

MySQL学习笔记06__分组查询

来源:SegmentFault

时间:2023-01-18 21:29:46 150浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《MySQL学习笔记06__分组查询》,文章讲解的知识点主要包括MySQL,如果你对数据库方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

细枝末节

SELECT
    分组,列(要求出现在GROUP BY后面)
FROM
    表名
[WHERE 筛选调节]
GROUP BY
    分组列表
[HAVING 筛选条件]
[ORDER BY 子句]

筛选条件分类

分组前筛选

数据源

/* 1. 先查询每个部门员工个数 */
SELECT COUNT(*), dept_id
FROM emps
GROUP BY dept_id
    
/* 2. 根据1中的结果集,对>2条件进行筛选 */
SELECT COUNT(*),dept_id
FROM emps
GROUP BY dept_id
HAVING COUNT(*)>2;
查询每个工种有奖金的员工的最高工资>12000的工种编号和最高工资

/* 1. 先查询每个工种有奖金的员工的最高工资及工种编号 */
SELECT MAX(salary), job_id
FROM emp
WHERE bonus IS NOT NULL
GROUP BY job_id;

/* 2. 根据1中的结果集继续对最高工资>12000条件进行筛选 */
SELECT MAX(salary), job_id
FROM emp
WHERE bons IS NOT NULL
GROUP BY job_id
HAVING MAX(salary)>12000;
查询领导编号>102的每个领导手下的最低工资>5000的领导编号及其最低工资

/* 1. 先查询领导编号>102的的每个领导手下的最低工资及领导编号 */
SELECT MIN(salary), mng_id
FROM emp
WHERE mng_id>102
GROUP BY mng_id;

/* 2. 根据1中的结果集继续对最低工资>5000条件进行筛选 */
SELECT MIN(salary), mng_id
FROM emp
WHERE mng_id>102
GROUP BY mng_id
HAVING MIN(salary)>5000;
按员工姓名的长度分组,查询每组员工个数,筛选员工数>5的组有哪些

/* 1. 先将员工星空按长度分组,查询每组员工个数 */
SELECT COOUNT(*), LENGTH(name)
FROM emp
GROUP BY LENGTH(name);

/* 2. 根据1中的结果集继续对员工数>5条件进行筛选 */
SELECT COUNT(*), LENGTH(name)
FROM emp
GROUP BY LENGTH(name)
HAVING COUNT(*)>5;

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表