首页 > 解决方案 > SQL 获取最大日期

问题描述

我需要为每个客户提供每种产品的最新价格。我对 SQL 不是很擅长,我不明白我该怎么做。

数据 :

在此处输入图像描述

我想要的是 :

在此处输入图像描述

可以通过 SQL 请求获得这些数据吗?

标签: mysqlsqldateselectgreatest-n-per-group

解决方案


使用 window function ROW_NUMBER(),如果在您的 RDBMS 中可用:

SELECT product, price, date, client
FROM (
    SELECT
        t.*,
        ROW_NUMBER() OVER(PARTITION BY product, client ORDER BY date DESC) rn
    FROM mytable t
) x
WHERE rn = 1

在 MySQL < 8.0 中:

SELECT product, price, date, client
FROM mytable t
WHERE NOT EXISTS (
    SELECT 1
    FROM mytable t1
    WHERE t1.client = t.client AND t1.product = t.product AND t1.date > t.date
)

推荐阅读