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

SQL新手求助:如何对比商户前一日营收数据?

解决方案

首先,我们需要分步处理问题,先计算商户每日营收,再对比前一日数据,最后筛选出符合条件的商户:

完整SQL代码

WITH daily_merchant_revenue AS (
    -- 第一步:计算每个商户每日的总营收,四舍五入到两位小数
    SELECT 
        DATE(order_timestamp) AS order_date,
        od.merchant_id,
        ROUND(SUM(od.amount), 2) AS daily_revenue
    FROM order_details od
    GROUP BY DATE(order_timestamp), od.merchant_id
),
daily_revenue_with_prev AS (
    -- 第二步:获取每个商户前一日的营收
    SELECT 
        order_date,
        merchant_id,
        daily_revenue,
        LAG(daily_revenue) OVER (PARTITION BY merchant_id ORDER BY order_date) AS prev_day_revenue
    FROM daily_merchant_revenue
),
qualified_merchants AS (
    -- 第三步:筛选出当日营收高于前一日的商户,且排除无前置数据的日期
    SELECT 
        order_date,
        merchant_id,
        daily_revenue
    FROM daily_revenue_with_prev
    WHERE prev_day_revenue IS NOT NULL 
      AND daily_revenue > prev_day_revenue
),
daily_max_revenue AS (
    -- 第四步:找出每日符合条件商户中的最高营收值
    SELECT 
        order_date,
        MAX(daily_revenue) AS max_revenue
    FROM qualified_merchants
    GROUP BY order_date
)
-- 第五步:关联商户表获取名称,输出结果
SELECT 
    qm.order_date,
    md.name
FROM qualified_merchants qm
JOIN daily_max_revenue dmr 
    ON qm.order_date = dmr.order_date 
    AND qm.daily_revenue = dmr.max_revenue
JOIN merchant_details md 
    ON qm.merchant_id = md.id
ORDER BY qm.order_date;

代码解释

  • daily_merchant_revenue:按日期和商户分组,计算每日营收并四舍五入到两位小数。
  • daily_revenue_with_prev:使用LAG()窗口函数,为每个商户的每日营收匹配前一日的营收值(PARTITION BY merchant_id确保只对比同一商户的历史数据)。
  • qualified_merchants:过滤出当日营收高于前一日的商户,同时排除没有前一日数据的记录(prev_day_revenue IS NOT NULL)。
  • daily_max_revenue:统计每日符合条件商户中的最高营收金额,用于后续筛选当日Top商户。
  • 最终查询:关联符合条件的商户和每日最高营收数据,再关联商户表获取名称,按日期排序输出。

注意事项

  • 假设order_details表包含merchant_id字段关联商户表(你原代码中的order_details.id = merchant_details.id应为笔误,需调整为商户ID关联)。
  • 如果题目要求的是"当日营收高于前一日全平台最高营收",逻辑会略有不同,但根据问题描述,这里默认是对比商户自身的前一日营收。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 03:49:56