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

如何编写SQL获取每个客户-产品组合的最早购买日期?

解决方法:获取每个客户-产品组合的最早购买日期

问题分析

你需要筛选出customer和product的唯一组合,并获取该组合对应的最小purchase-date,之前的窗口函数仅按customer分区,导致结果不符合预期——只拿到了每个客户最早的一条购买记录,而非每个客户+产品组合的最早记录。

两种有效解法

1. 使用GROUP BY聚合查询(最直接)

通过按customer和product分组,利用MIN()函数直接计算每组的最小购买日期:

SELECT 
    customer,
    product,
    MIN(purchase-date) AS purchase-date
FROM 
    table
GROUP BY 
    customer, product
ORDER BY 
    customer, product;

这个查询会自动对每个客户-产品组合进行聚合,返回每组的最早购买日期,完全匹配你的需求输出。

2. 修正窗口函数写法

将窗口函数的PARTITION BY字段同时包含customer和product,确保每个客户的每个产品组合都独立排序:

WITH data AS (
    SELECT 
        *,
        ROW_NUMBER() OVER (PARTITION BY customer, product ORDER BY purchase-date) AS rownum
    FROM 
        table
)
SELECT 
    customer,
    product,
    purchase-date
FROM 
    data
WHERE 
    rownum = 1
ORDER BY 
    customer, product;

修改后,每个customer+product组合会被划分为单独的分区,按purchase-date排序后取第一条,就是该组合的最早购买记录。


内容的提问来源于stack exchange,提问作者Vik G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 03:07:38