2

私はSQL Serverを初めて使用するため、質問がばかげている場合は申し訳ありません。指定した月の各日の上位 5 件のレコードを選択したいと考えています。例えば

top 5 records for day 1 in month september
top 5 records for day 2 in month september
top 5 records for day 3 in month september
.
.
top 5 records for day 31 in month september

これらすべてのレコードを 1 つの結果として表示します。

4

2 に答える 2

4

2012年6月の月の速度記録をチェックしていて、上位5つの速度(速度別desc)が必要だったとします。

SELECT *
  FROM (
    SELECT *, RowNum = Row_number() over (partition by Cast(EventTime as Date)
                                          order by Speed desc)
      FROM Events
     WHERE EventTime >= '20120601'
       AND EventTime <  '20120701'
  ) X
 WHERE RowNum <= 5
于 2012-10-08T07:18:54.543 に答える
1

これを試して、

WITH TopFiveRecords
AS
(
    SELECT  *,
            ROW_NUMBER() OVER (PARTITION BY dayColumn ORDER BY colName DESC) RN
    FROM tableName
)
SELECT  *
FROM TopFiveRecords
WHERE RN <= 5 
      -- AND date condition here ....

dayColumn月の日付を含む
colName列 ソートする列

于 2012-10-08T06:56:52.560 に答える