MySQl-获得每个部门的薪水

时间:2012-05-22 10:50:24

标签: mysql sql

如何获得每个部门的前两名薪水?表格如下:

-------------------------
name     dept      sal
-------------------------
name1    CSE       100000
name2    CSE       200000
name3    ECE       200000
name4    EEE       400000
name5    CSE       700000
name6    ECE       600000

6 个答案:

答案 0 :(得分:1)

对于第一部门

SELECT dept
FROM  `Table` 
WHERE dept = 'CSE'
ORDER BY sal DESC 
LIMIT 0 , 2

第二部门

SELECT dept
FROM  `Table` 
WHERE dept = 'ECE' 
ORDER BY sal DESC 
LIMIT 0 , 2

每个以上查询都会显示每个部门的前两个结果。

更新:

SELECT dept, sal
FROM  `tbl_practice` 
WHERE dept =  'CSE'
OR dept =  'ECE'
ORDER BY sal DESC 
LIMIT 0 , 4

答案 1 :(得分:0)

您需要使用聚合函数SUMGROUP BY子句。

SELECT dept, SUM(Sal) TotalSalary
FROM tableName
GROUP BY dept
Order By TotalSalary DESC
Limit 2

答案 2 :(得分:0)

答案 3 :(得分:0)

不要认为在单个SQL语句中您将能够获取数据。如果要使用SQL实现它,则需要使用一个存储过程,它将遍历所有depts并使用limit和order by获取前2个工资行。

答案 4 :(得分:0)

尝试此查询

select * from (
 SELECT  DISTINCT dept
        FROM    tableName )a
join tableName b
on a.dept >=b.dept
and 
a.dept <=b.dept
and sal >=(
select sal from tableName 
  where a.dept=b.dept
  order by sal limit 1,1
)

答案 5 :(得分:0)

 select profession as d,(select max(sal) 
 from emp where profession like d) as firstsal,(
 select sal from emp 
 where profession like d order by sal desc limit 1,1) as secondsal from emp 
 GROUP BY profession