如何获得每个部门的前两名薪水?表格如下:
-------------------------
name dept sal
-------------------------
name1 CSE 100000
name2 CSE 200000
name3 ECE 200000
name4 EEE 400000
name5 CSE 700000
name6 ECE 600000
答案 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)
您需要使用聚合函数SUM
和GROUP BY
子句。
SELECT dept, SUM(Sal) TotalSalary
FROM tableName
GROUP BY dept
Order By TotalSalary DESC
Limit 2
答案 2 :(得分:0)
在州政府中使用LIMIT
:http://dev.mysql.com/doc/refman/5.5/en/select.html
答案 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