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

如何编写SQL查询按商户分组统计各支付方式交易总额

错误原因

当前SQL返回结果不符合预期,核心是两处写法错误:

  • GROUP BY子句多余加入了payment_mode字段,会把同一商户下不同支付方式的记录拆成独立分组,只要商户同时有两类支付交易,就会被拆成两行输出。
  • 聚合函数SUM()和条件判断CASE WHEN的顺序写反,当前写法是先判断支付方式再对分组内金额求和,逻辑上无法跨同商户的不同支付方式分组聚合。
    另外注意原表商户字段名为merchant,原SQL写的merchant_id和表结构不匹配;payment_mode的取值要和表内实际存储的大小写一致,避免匹配失败。
修正后SQL
SELECT 
    merchant,
    SUM(CASE WHEN payment_mode = 'CASH' THEN amount ELSE 0 END) AS cash_amount,
    SUM(CASE WHEN payment_mode = 'ONLINE' THEN amount ELSE 0 END) AS online_amount
FROM details
WHERE payment_mode IN ('CASH', 'ONLINE')
GROUP BY merchant;
逻辑说明
  • 仅按merchant字段分组,保证每个商户最终仅返回一行结果。
  • 将SUM()放在CASE WHEN外层,遍历当前商户分组下的所有交易记录:匹配对应支付方式的记录累加交易金额,不匹配的记录累加0,没有对应支付方式交易时最终求和结果自然为0,完全符合需求。
    如果表内payment_mode实际存储为小写cash/online,将语句中对应的大写枚举值替换为小写即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 16:45:46