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

并将这些所有记录显示为一个结果。

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 回答