您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

仅获取按列分组的最新行

仅获取按列分组的最新行

这是“最大每组”查询的示例。我认为将其分为两个子查询然后将结果合并起来是最容易理解的。

一个查询就是您已经拥有的子查询

第二个子查询使用窗口函数ROW_NUMBER对每个收件人的电子邮件进行编号,以最近的1开头,然后是2、3等等。

然后将第一个查询的结果与行号为1(即最新)的第二个查询的结果相结合。这样可以确保在有关系的情况下,每个收件人只能获得一行。

这是查询

SELECT T1.Recipient, T1.EmailCount, T2.Status FROM
(
    SELECT Recipient, COUNT(*) AS EmailCount
    FROM Messages
    GROUP BY Recipient
) T1
JOIN
(
    SELECT
        Recipient,
        Status,
        ROW_NUMBER() OVER (PARTITION BY Recipient ORDER BY Date Desc) AS rn
    FROM Messages
) T2
ON T1.Recipient = T2.Recipient AND T2.rn = 1

得到以下结果:

Recipient            EmailCount  Status  
others@example.com   2           2       
someone@example.com  2           1       
them@example.com     3           1
其他 2022/1/1 18:45:04 有478人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶