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

SQL查询问题:按国家统计销售额降序,结果仅显示单一国家

问题分析与修正方案

你的查询存在两个核心问题,导致结果不符合预期:

  1. 缺少分组聚合的GROUP BY子句
    你使用了SUM()聚合函数,但未指定分组字段,数据库会将所有匹配行合并为一行返回,因此只能看到单个国家的数据。

  2. 表关联逻辑错误
    users.id = order_items.order_id这个关联条件逻辑不合理——用户ID与订单ID是完全独立的字段,正确的关联应该通过orders表作为中间桥梁:用户表关联订单表(users.id = orders.user_id),订单表再关联订单项表(orders.id = order_items.order_id)。错误的关联条件只会匹配到极少数ID巧合相同的数据,这也是你仅能看到DE国家数据的关键原因。


修正后的查询语句:

SELECT 
  users.country AS 'Country', 
  SUM(products.price * order_items.quantity) AS 'Total Sales'
FROM users
LEFT JOIN orders ON users.id = orders.user_id
LEFT JOIN order_items ON orders.id = order_items.order_id
LEFT JOIN products ON order_items.product_id = products.id
GROUP BY users.country
ORDER BY `Total Sales` DESC;

补充说明:

  • 使用LEFT JOIN替代INNER JOIN,可以确保即使某个国家没有订单,也会显示该国家代码(销售额为NULL);如果需要将NULL替换为0,可改用COALESCE(SUM(products.price * order_items.quantity), 0)。
  • GROUP BY users.country明确指定按国家分组计算销售额总和,这是按维度统计聚合数据的必要步骤。
  • 排序逻辑改为按Total Sales降序,完全匹配任务要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:44:51