SQL分组统计

来源:百度知道 编辑:UC知道 时间:2024/05/27 07:00:23
题目如下:

在一个数据库中创建如下各表
部门数据表:
部门编号 部门名称 部门职能 部门负责人
1 录入部 录入数据 张晓峰
2 检验部 检验产品 慕容雪
3 项目部 负责项目 孙晓晴
4 办公室 收发传真 周晴晴

员工数据表:
编号 姓名 性别 部门编号 工资
1 陈有朋 男 3 2000
2 孙晓晴 女 3 3000
3 张晓峰 男 1 1000
4 慕容雪 男 2 1500
5 周晴晴 女 4 3000
6 孙涛 男 3 2500

项目数据表

项目编号 项目名称 项目负责人 项目难度级别 预计工期 结束日期 项目收入
1 Sis公司的主板 孙晓晴 1 20 January 1, 2002 3000
2 Sis公司的CPU 陈有朋 2 40 January 1, 2003 2000
3 IBM公司的键盘 陈有朋 1 20 feburary 2, 2002 500
4 孙涛 1 20
5 Sis公司的地板 陈有朋 1 20 January 3, 2001 4000
6 Pet公司的光盘 陈有朋 2 40 feburary 2, 2002 10000
7 SUN公司的桌子 陈有朋 1 20 feburary 1, 2001 2500

检索每个部门不同性别的平均工资,每个部门的平均工资,公司所有员工的平均工资,所有男性的平均工资,和所有女性的平均工资。
题目的意思应该是用一条语句写完。。。只要能按照要求显示出来,语句长点没关系。。

abingpow 你的答案确实可以,但是有没有办法把几条记录用东西分开来?在一起显示有点乱。。

hovlj_1130 不好意思,我刚学的SQL server2000。请问下。具体怎么改成sql标准语法?

select 部门编号,性别,avg(工资) as 平均工资 from 员工数据表 group by 部门编号,性别
union all
select 部门编号,'',avg(工资) from 员工数据表 group by 部门编号
union all
select '','',avg(工资) from 员工数据表
union all
select '',性别,avg(工资) from 员工数据表 group by 性别

貌似你的这个SQL分组统计只跟第二张表有关系,跟另外两张表都没有关系。
假设第二张表T的字段为(id,name,sex,deptno,sal)

检索每个部门不同性别的平均工资,每个部门的平均工资,公司所有员工的平均工资,所有男性的平均工资,和所有女性的平均工资。
select
sum(decode(sex,'男',sal,'女',0))/
sum(decode(sex,'男',1,'女',0)) 全男均薪,
sum(decode(sex,'男',0,'女',sal))/
sum(decode(sex,'男',0,'女',1)) 全女均薪,
sum(decode(sex,'男',decode(deptno,1,sal,0),'女',0))/
sum(decode(sex,'男',decode(deptno,1,1,0),'女',0)) 一男均薪,
sum(decode(sex,'男',decode(deptno,2,sal,0),'女',0))/
sum(decode(sex,'男',decode(deptno,2,1,0),'女',0)) 二男均薪,
sum(decode(sex,'男',