当前位置: 代码迷 >> 其他数据库 >> 关于sql语句解决思路
  详细解决方案

关于sql语句解决思路

热度:312   发布时间:2016-05-05 08:22:56.0
关于sql语句
1.怎么查询某年员工工资有3个月都大于20000的信息
   它是这样的一个结构,A表工号,姓名,部门编号 B表 工号,应发工资,时间
如:2013年有3个月工资都大于20000的员工信息,
   查询内容:工号,姓名,部门编号


2.员工薪资表(t_salary)结构:工号,姓名,部门编号,应发工资,月份
   筛选条件:201008月份工资中,统计出各部门中工资高于本部门平均工资的人数。
   查询内容:部门编码,人数。


麻烦大家帮忙解决下,谢谢!

------解决方案--------------------

1.怎么查询某年员工工资有3个月都大于20000的信息
   它是这样的一个结构,A表工号,姓名,部门编号 B表 工号,应发工资,时间
如:2013年有3个月工资都大于20000的员工信息,
   查询内容:工号,姓名,部门编号
select 工号,姓名,部门编号
from tb
where 时间>'2013' 
group by 工号,姓名,部门编号
having count(case when 应发工资>20000 then 1 end)>=3

2.员工薪资表(t_salary)结构:工号,姓名,部门编号,应发工资,月份
   筛选条件:201008月份工资中,统计出各部门中工资高于本部门平均工资的人数。
   查询内容:部门编码,人数。
select 部门编号,count(*)
 from tb A,(
select 工号,avg(应发工资) as 应发工资
from tb
where 月份='201008'
group by 工号
)B
where A.工号=B.工号 and A.应发工资>B.应发工资
group by 部门编号


------解决方案--------------------
1.怎么查询某年员工工资有3个月都大于20000的信息
   它是这样的一个结构,A表工号,姓名,部门编号 B表 工号,应发工资,时间
如:2013年有3个月工资都大于20000的员工信息,
   查询内容:工号,姓名,部门编号


select 工号,姓名,部门编号
from A表
where 时间 between '2013-01-01' and '2013-12-31'
group by 工号,姓名,部门编号
having count(*)>=3

   
------解决方案--------------------
2.员工薪资表(t_salary)结构:工号,姓名,部门编号,应发工资,月份
   筛选条件:201008月份工资中,统计出各部门中工资高于本部门平均工资的人数。
   查询内容:部门编码,人数。

select 部门编码,count(*) as 人数
from 员工薪资表 t
where 月份=201008
and 应发工资>(select avg(应发工资) from 员工薪资表 where 部门编号=t.部门编号)
group by 部门编码
  相关解决方案