【数据库】分组函数

本文介绍SQL中聚合函数如SUM、AVG等的基本用法,并通过具体案例展示如何结合分组查询进行数据分析,包括筛选部门平均薪资、工作编号对应的平均薪资等。

聚合函数、分组函数

SUM、AVG、MIN、MAX、COUNT


可以单独使用 select max(sale) from aa


不允许与其他列共同书写在在非分组查询的select from 之间

selectmax(sale),name,id,sale from aa  oracle 直接报错,mysql其他列信息无意义

分组查询

 select sex from aa  group  by sex;    --oracle 中分组查询, select  from 之间只允许出现 分组函数和分组依据列

 having  一般只使用分组函数作为查询条件  

select avg(sale),deptno from aa  

group by  deptno  HAVING avg(sale) >750   order  by  deptno  ;       --  oracle 中having可以书写在 group 前面


练习题:

1.查询部门平均工资在8000元以上的部门名称及平均工资。

SELECT    department_id,job_id, AVG(IFNULL(salary,0)) salaryAvg

FROM      employees2

GROUP BY department_id

HAVING salaryAvg>8000;

 

2.查询工作编号中不是以“SA_”开头并且平均工资在8000元以上的工作编号及平均工资,并按平均工资降序排序。

SELECT job_id,AVG(IFNULL(salary,0)) avgSalary

FROM employees2

WHERE job_id NOT LIKE 'SA\_%'

GROUP BY department_id

HAVING avgSalary >8000

ORDER BY avgSalary DESC

 

3.查询部门人数在4人以上的部门的部门名称及最低工资和最高工资。

SELECTdepartment_id,MAX(salary),MIN(salary)

FROM employees2

GROUP BY department_id

HAVING COUNT(department_id)>4

 

4.查询工作不为SA_REP,工资的和大于等于25000的工作编号和每种工作工资的和。

SELECT department_id ,job_id,SUM(IFNULL(salary,0))sum

FROM employees2

WHERE job_id<>'SA_REP'

GROUP BY department_id

HAVING sum>25000

 

5.显示经理号码,这个经理所管理员工的最低工资,不包括经理号为空的,不包括最低工资小于3000的,按最低工资由高到低排序

SELECT manager_id,MIN(salary)

FROM employees2

WHERE manager_id IS NOT NULL

GROUP BY manager_id

HAVING MIN(IFNULL(salary,0))>=3000

ORDER BY MIN(salary) DESC



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值