0

各部門の上位2つの給与を取得するにはどうすればよいですか?テーブルは次のようになります。

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

6 に答える 6

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

上記の各クエリには、各部門の上位 2 つの結果が表示されます。

アップデート :

SELECT dept, sal
FROM  `tbl_practice` 
WHERE dept =  'CSE'
OR dept =  'ECE'
ORDER BY sal DESC 
LIMIT 0 , 4
于 2012-05-22T11:02:47.417 に答える
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
)
于 2012-05-22T12:36:02.877 に答える
0

SUM集計関数とGROUP BY句を使用する必要があります。

SELECT dept, SUM(Sal) TotalSalary
FROM tableName
GROUP BY dept
Order By TotalSalary DESC
Limit 2
于 2012-05-22T10:53:01.303 に答える
0

LIMITあなたのstatememtで使用してください: http ://dev.mysql.com/doc/refman/5.5/en/select.html

于 2012-05-22T10:53:23.887 に答える
0

単一の SQL ステートメントでデータを取得できるとは思わないでください。SQL を使用してそれを達成したい場合は、ストアド プロシージャを使用して、すべての部門をループし、制限と順序付けを使用して上位 2 つの給与行をフェッチする必要があります。

于 2012-05-22T10:58:51.210 に答える
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
于 2012-09-20T09:29:02.243 に答える