今日看到一题不会做:还请大家帮帮忙!!TKS
题目描述如下:员工表:user(id,pay,departid)
部门表:depart(id,name)1.要求得到每个部门的总工资数,统计的记录放到表userSum(id,paysum,departname)中,最好用一条SQL语句实现.(我不知道如何将统计结果放到userSum表中)
2.查询每个部门不同工资区间人数:如
3000以下 3000-4000 4000-5000 5000以上
服务部 200 100 400 200
人事部 ... ... ... ...
研发部
.....以上每个表中的id都为自动增长:
谢谢!!
题目描述如下:员工表:user(id,pay,departid)
部门表:depart(id,name)1.要求得到每个部门的总工资数,统计的记录放到表userSum(id,paysum,departname)中,最好用一条SQL语句实现.(我不知道如何将统计结果放到userSum表中)
2.查询每个部门不同工资区间人数:如
3000以下 3000-4000 4000-5000 5000以上
服务部 200 100 400 200
人事部 ... ... ... ...
研发部
.....以上每个表中的id都为自动增长:
谢谢!!
解决方案 »
- pl/sql developer 9.0bete 发布了,
- solaris下恢复oracle
- sequence的一次NEXTVAL 为什么会返回很多值呢?
- dmp文件导入的存储过程实现方法。
- 急~~~~~~~~~~~~~~~~~~~~~~~~~~关于oracle的jobs 时间间隔设置
- 变量小问题
- 小問題,急解決??(在線等!!!)
- 数据库管理员一般关心数据库的哪些指标
- 怎样为我的ORACLE数据库创建一个用户?
- 怎样设计关于会员折扣的数据库表
- 请问:oracle中如果想存储“图片”和“大量的文本”(比如有512M),如何创建表?如何像表中插入数据?看下面的例子
- 请问以下三种情况的数据库为什么这么设计?主要是主键,外键的设计。请高手讲解下,非常感谢!!!!!!
select b.id,
sum(a.pay),
b.name
from user a,departid b
where a.departid=b.id
group by b,id,b.name
sum(case when a.pay<3000 then 1 else 0 end) "3000以下",
sum(case when a.pay>=3000 and a.pay<4000 then 1 else 0 end) "3000-4000",
sum(case when a.pay>=4000 and a.pay<5000 then 1 else 0 end) "4000-5000",
sum(case when a.pay>=5000 then 1 else 0 end) "5000 以上"
from user a,departid b
where a.departid=b.id
group by b.name
SQL> select * from users; U_ID PAY DEPARTID
---------- ---------- ----------
1 2000 1
2 8000 2
3 6200 3
4 3000 1
5 5500 1
6 3000 1
7 5100 2
8 3600 3
9 2800 39 rows selected
SQL> select * from depart; DID DNAME
---------- --------------
1 service
2 human_resource
3 development
SQL> select d.dname,
2 sum((case
3 when pay < 3000 then
4 1
5 else
6 0
7 end)) less_3000,
8 sum((case
9 when pay >= 3000 and pay < 4000 then
10 1
11 else
12 0
13 end)) between_3000_4000,
14 sum((case
15 when pay >= 4000 and pay < 5000 then
16 1
17 else
18 0
19 end)) between_4000_5000,
20 sum((case
21 when pay > 5000 then
22 1
23 else
24 0
25 end)) large_5000
26 from users u, depart d
27 where u.departid = d.did
28 group by d.dname;
DNAME LESS_3000 BETWEEN_3000_4000 BETWEEN_4000_5000 LARGE_5000
-------------- ---------- ----------------- ----------------- ----------
service 1 2 0 1
human_resource 0 0 0 2
development 1 1 0 1
select d.id,
sum(u.pay) as paysum,
d.name as departname
from user u,
depart d
where u.departid = d.id
group by d.id,
d.name;
sum(case
when t1.pay < 3000 then
1
else
0
end) "3000以下",
sum(case
when t1.pay >= 3000 and t1.pay < 4000 then
1
else
0
end) "3000-4000",
sum(case
when t1.pay >= 4000 and t1.pay < 5000 then
1
else
0
end) "4000-5000",
sum(case
when t1.pay >= 5000 then
1
else
0
end) "5000 以上" from user t1, departid t2
where t1.departid = t2.id
group by t2.name