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

MySQL如何按行分组统计多列,实现每个关键词一行展示各商家结果数

解决方案

完全可以实现该需求,使用条件聚合做行转列即可,因为商家数量仅10个固定,不需要用到动态SQL,直接写对应判断逻辑即可。

现有查询的问题

你当前写的查询存在以下问题:

  • 仅按kwd.ID分组,查询结果中包含非分组字段MERCHANT_ID、RESULTS,不符合严格SQL模式的要求,且无法将多商家的结果拆分到独立列
  • 日期过滤的格式错误,DATE字段是日期类型,需用字符串格式传值,另外你示例数据的统计日期是2021-07-06,过滤条件写20210705查不到任何结果
  • GROUP BY逻辑和需求的行转列要求不匹配

正确查询语句

假设MERCHANT_ID=1对应Amazon、MERCHANT_ID=2对应eBay,剩下的8个商家按ID对应关系依次补全CASE WHEN逻辑即可:

SELECT
    kwd.KEYWORD AS KWD,
    SUM(CASE WHEN mss.MERCHANT_ID = 1 THEN mss.RESULTS ELSE 0 END) AS `RESULTS Amazon`,
    SUM(CASE WHEN mss.MERCHANT_ID = 2 THEN mss.RESULTS ELSE 0 END) AS `RESULTS eBay`
    -- 其余商家按上面的格式补全,比如MERCHANT_ID=3就加下一行
    -- SUM(CASE WHEN mss.MERCHANT_ID = 3 THEN mss.RESULTS ELSE 0 END) AS `RESULTS 其他商家名`
FROM keywords kwd
LEFT JOIN stats mss 
    ON mss.TYPE_ID = kwd.ID
    AND mss.DATE = '2021-07-06' -- 这里写你要统计的日期,放在关联条件比where过滤更适合左连接保留无统计数据的关键词
GROUP BY kwd.ID, kwd.KEYWORD
ORDER BY kwd.ID;

示例数据执行结果

用你提供的测试数据执行上述语句,输出结果如下:

KWDRESULTS AmazonRESULTS eBay
testing3322
blablub36

完全符合你要求的每个关键词一行、各商家结果分独立列展示的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 06:36:03