SQL Server 如何按日期限制结果[duplicate]

1l5u6lss  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(115)

此问题在此处已有答案

Get top 1 row of each group(19个答案)
10天前关闭。
我正试图从我的数据库中调出前5个射击项目。
例如,2022年8月13日的2000个用户登录事件。
目前,当运行以下查询时,它将返回顶部事件,但也会返回接下来的40个事件。
是否有一种方法可以将TOPLIMIT嵌入到每天的查询中,而不是限制返回的结果?
目前,我的查询如下所示:

SELECT COUNT (M.EventID) AS TopEvent,
    Name AS Event,
    CAST (MsgDate AS DATE) AS time
    FROM Events.dbo.Msg M
    JOIN Alarms.dbo.Event E ON E.EventID = M.EventID
    GROUP BY CAST (MsgDate AS DATE), Name,
    A.EventID
    ORDER BY CAST (MsgDate AS DATE), COUNT (MA.EventID) DESC
t5fffqht

t5fffqht1#

只需使用ROW_NUMBER()函数和一个公用表表达式。
例如:

WITH cte
AS
(
SELECT M.EventID AS Event,
        Name AS Event,
        CAST (MsgDate AS DATE) AS time,
        ROW_NUMBER() OVER (PARTITION BY MsgDate ORDER BY M.EventID) as RN

FROM Events.dbo.Msg M
JOIN Alarms.dbo.Event E ON E.EventID = M.EventID
)
SELECT *
FROM cte
WHERE cte.RN <=5;

相关问题