2
SELECT top 5
day_description,
count(numberofdays) as number

FROM mytable

where department = 'departmentname'

group by day_description

私の選択はこのようなものを取り戻します:

day description           number           
holiday                     32               
working day                 212              
training day                5                
meeting day                 26               
admin day                   66   

1〜5、1が最大値の行、5が最小値の行のいずれかに割り当てる新しい列を追加する方法はありますか?そしてこのように見えます:

day description           number           top5ID
holiday                     32               3
working day                 212              1
training day                5                5
meeting day                 26               4
admin day                   66               2
4

2 に答える 2

5

多分このようなもの:

;WITH CTE
AS
(
    SELECT top 5
        day_description,
        count(numberofdays) as number
    FROM mytable
    where department = 'departmentname'
    group by day_description
)
SELECT
    ROW_NUMBER() OVER(ORDER BY CTE.number DESC) AS Top5ID,
    CTE.*
FROM
    CTE

または CTE なし:

SELECT
    ROW_NUMBER() OVER(ORDER BY t.number DESC) AS Top5ID,
    t.*
FROM
    (
        SELECT top 5
        day_description,
        count(numberofdays) as number
        FROM mytable
        where department = 'departmentname'
        group by day_description
    ) AS t
于 2012-05-02T12:09:48.427 に答える
1

したがって、次のように使用できます。

SELECT TOP 5 day_description, COUNT(numberofdays) AS number, 
ROW_NUMBER() OVER(ORDER BY COUNT(numberofdays) DESC) AS Top5ID
FROM mytable
WHERE department = 'departmentname'
GROUP BY day_description
ORDER BY COUNT(numberofdays) DESC
于 2012-05-02T12:49:11.290 に答える