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

请求编写SQL:找出各商品购买量Top2客户及最近购买日期

解决方法

首先我们需要先统计每个客户针对每个商品的总购买量(以总revenue计算),同时记录该客户购买该商品的最近日期,之后通过窗口函数对每个商品下的客户按总购买量排序,筛选出排名前2的记录。

示例SQL语句

WITH customer_item_stats AS (
    SELECT
        customer_id,
        item,
        SUM(revenue) AS total_purchase_volume,
        MAX(created_at) AS latest_purchase_date
    FROM purchases
    GROUP BY customer_id, item
),
ranked_customers AS (
    SELECT
        item,
        customer_id,
        latest_purchase_date,
        total_purchase_volume,
        ROW_NUMBER() OVER (PARTITION BY item ORDER BY total_purchase_volume DESC) AS purchase_rank
    FROM customer_item_stats
)
SELECT
    item,
    customer_id,
    latest_purchase_date,
    total_purchase_volume
FROM ranked_customers
WHERE purchase_rank <= 2
ORDER BY item, purchase_rank;

语句说明

  1. CTE customer_item_stats:按客户和商品分组,计算每个客户对应商品的总购买量(总revenue),并取该客户购买该商品的最近日期。
  2. CTE ranked_customers:使用ROW_NUMBER()窗口函数,按商品分组,对每个商品下的客户按总购买量降序排名。如果需要处理并列排名(比如两个客户总购买量相同都排第1),可以替换窗口函数:
    • RANK():并列的会有相同排名,后续排名会跳跃(例如两个第1,下一个是第3)
    • DENSE_RANK():并列的相同排名,后续排名不跳跃(例如两个第1,下一个是第2)
  3. 最后筛选出排名≤2的记录,按商品和排名排序输出。

针对给定数据集的输出结果

基于你提供的数据集,执行上述SQL后会得到:

itemcustomer_idlatest_purchase_datetotal_purchase_volume
apple33/18/202276
apple13/28/202256
banana43/18/202262
banana13/7/202252
peanut33/31/202288
peanut13/30/202229
pear23/18/202221

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:15:35