Sql 查询各组最新数据

@果酱  November 27, 2024

列有a、b、time,查出以a分组time为最新的b的数据,组内最新

子查询,再join

SELECT
    t1.a,
    t1.b,
    t1.time
FROM
    your_table t1
INNER JOIN (
    SELECT
        a,
        MAX("time") AS max_time
    FROM
        your_table
    GROUP BY
        a
) t2 ON t1.a = t2.a AND t1.time = t2.max_time;

子查询和in

可以组合in: (a,b) in ((va1, vb1), (va2, vb2)...)

SELECT a, b, time
FROM your_table
WHERE (a, time) IN (
    SELECT a, MAX(time)
    FROM your_table
    GROUP BY a
);

使用窗口函数

RANK():如果有多个行并列排名第一,它们都会得到相同的排名,并且下一个排名会跳过。
DENSE_RANK():如果有多个行并列排名第一,它们都会得到相同的排名,并且下一个排名会紧随其后。

WITH RankedData AS (
    SELECT
        a,
        b,
        "time",
        RANK() OVER (PARTITION BY a ORDER BY "time" DESC) AS rnk
    FROM
        your_table
)
SELECT
    a,
    b,
    "time"
FROM
    RankedData
WHERE
    rnk = 1;

添加新评论

  1. 作者的情感表达细腻入微,让人在阅读中找到了心灵的慰藉。

    Reply
  2. 作者以简洁明了的语言,传达了深刻的思想和情感。

    Reply
  3. 批判锋芒犀利,直指问题症结所在。

    Reply
  4. 选材新颖独特,通过细节描写赋予主题鲜活生命力。

    Reply
  5. 作者的情感表达细腻入微,让人在阅读中找到了心灵的慰藉。

    Reply
  6. ?议论文评语?

    Reply
  7. 操作步骤清晰,指导性强,易于实践。

    Reply
  8. 文字流畅如丝,语言优美动人,读来令人心旷神怡。

    Reply
  9. 这是一篇佳作,无论是从内容、语言还是结构上,都堪称完美。

    Reply