You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何编写SQL查询获取各customer_website最近年份的记录?

获取每个customer_website的最新年份记录SQL实现

需求说明:从目标表中筛选出每个customer_website对应最近年份的记录,例如amazon.com存在3条记录(2条2019年、1条2020年),仅保留2020年的那条,最终输出记录ID集合为(10, 2, 3, 4, 5, 7, 8)。

方法一:使用窗口函数(推荐,兼容多数现代数据库)

窗口函数ROW_NUMBER()可实现分组内排序筛选,适用于PostgreSQL、MySQL 8.0+、SQL Server等数据库:

WITH ranked_records AS (
    SELECT 
        id,
        customer_website,
        year,
        -- 按网站分组,同组内按年份倒序排名,最新年份的记录排名为1
        ROW_NUMBER() OVER (PARTITION BY customer_website ORDER BY year DESC) AS rn
    FROM your_table_name
)
SELECT id
FROM ranked_records
WHERE rn = 1
ORDER BY id;

方法二:子查询关联(兼容低版本数据库)

如果你的数据库不支持窗口函数(如MySQL 5.x),可以先通过子查询获取每个网站的最大年份,再关联原表筛选:

SELECT t1.id
FROM your_table_name t1
INNER JOIN (
    -- 先计算每个customer_website对应的最大年份
    SELECT customer_website, MAX(year) AS max_year
    FROM your_table_name
    GROUP BY customer_website
) t2 
ON t1.customer_website = t2.customer_website 
AND t1.year = t2.max_year
ORDER BY t1.id;

注意:将上述代码中的your_table_name替换为实际表名,确保字段名id、customer_website、year与你的表结构一致。

内容的提问来源于stack exchange,提问作者Dinesh Ramesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:34:59