012、SQL数据库 表单 数据---分组查询

分组查询方法:

一、格式:

SELECT
    列(这个列要求必须只能是group by的后面字段),分组函数()
FROM 
    表名
WHERE
    筛选条件(针对表的所有记录)
GROUP BY
    分组字段列表
HAVING(只能配合GROUP BY使用)
    与分组有关的筛选条件
ORDER BY
    排序

二、注意:

1、分组之后,查询的字段只能是:查询的字段、聚合函数。

2、where和having的区别:

    * where 在分组之前进行限定,如果不满足此条件,不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来。

   * where后不可以跟聚合函数,而having可以进行聚合函数判断。

三、测试:

#查询员工人数超过5人的部门,并计算该部门员工人数,最后结果按照人数由多到少排列

SELECT COUNT(*)部门人数,department_id 
FROM 
	employees 
GROUP BY 
	department_id 
HAVING 
	部门人数>5
ORDER BY 部门人数 DESC;

结果:

#查询领导没有奖金的那个部门的员工的最高工资,且工资需要大于5000,并按最高工资从高到低排列

SELECT MAX(salary)最高工资,salary,department_id
FROM 
	employees
WHERE 
	commission_pct IS NULL#这里注意和函数ISNULL的区别,有空格
GROUP BY 
	department_id
HAVING
	最高工资>5000
ORDER BY
	最高工资 DESC;

结果:

#查询员工信息中包含字母’a‘的每个部门的平均工资,并按平均工资从高到底排列

SELECT AVG(salary)平均工资,department_id
FROM 
	employees	
WHERE 
	email LIKE '%a%'#这里是顿号,如果是强调和专用名词区分用着重号
GROUP BY 
	department_id 
ORDER BY 平均工资 DESC;

输出结果:

发布了103 篇原创文章 · 获赞 4 · 访问量 7769

猜你喜欢

转载自blog.csdn.net/l0510402015/article/details/104255727