1

SQL Server で、上位 5 つの給与を取得しようとしています。

私は次のような給料を持っています

5000
5000
4500
4500
3000
2000 
1000
500
400

そして私は手に入れたい

5000
5000
4500
4500
3000
2000
1000 
4

5 に答える 5

3
SELECT TOP 5 salary FROM your_table
ORDER BY salary DESC
于 2012-04-13T11:07:00.470 に答える
2

上位 5 つの個別の給与を取得したい場合 (同じ金額が何度表示されても)、DENSE_RANK()ランキング関数と CTE を使用してこれを達成する必要があります。

DECLARE @salaries TABLE (salary DECIMAL(18,4))

INSERT INTO @salaries VALUES(5000)
INSERT INTO @salaries VALUES(5000)
INSERT INTO @salaries VALUES(4500)
INSERT INTO @salaries VALUES(4500)
INSERT INTO @salaries VALUES(3000)
INSERT INTO @salaries VALUES(2000)
INSERT INTO @salaries VALUES(1000)
INSERT INTO @salaries VALUES(500)
INSERT INTO @salaries VALUES(400)

;WITH SalariesRanked AS
(
    SELECT 
        Salary, 
        SalaryNumber = DENSE_RANK() OVER(ORDER BY Salary DESC)
    FROM    
        @salaries
)
SELECT salary
FROM SalariesRanked 
WHERE SalaryNumber <= 5

これにより、次のような出力が得られます。

salary
5000.0000
5000.0000
4500.0000
4500.0000
3000.0000
2000.0000
1000.0000
于 2012-04-13T11:31:18.450 に答える
1
select salary
from
  (
    select salary,
           dense_rank() over(order by salary desc) as rn
    from YourTable
  ) as T
where rn <= 5

SE-Dataを試す

于 2012-04-13T11:30:58.343 に答える
0

TOP (Transact-SQL) の使い方を見てみましょう

于 2012-04-13T11:07:05.257 に答える
0
SELECT TOP 5 Salary
FROM [Table]
GROUP BY Salary
ORDER BY Salary DESC

給与の重複を避けるために、クエリをグループ化する必要があります。

于 2012-04-13T14:28:04.510 に答える