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

DB2多表关联聚合查询求助:查询指定客户及订单统计数据

DB2 关联查询与聚合统计解决方案

需求说明

需要从cust表筛选指定客户(cust_id=1、2)的基础信息,同时统计对应客户在order表中的订单数量和总金额,确实需要同时使用JOIN(关联两张表)和GROUP BY(按客户分组计算聚合值)。

最终SQL语句

SELECT 
    c.cust_id,
    c.first_name,
    c.last_name,
    COUNT(o.order_id) AS order_count,
    COALESCE(SUM(o.amount), 0) AS order_total
FROM 
    cust c
LEFT JOIN 
    "order" o ON c.cust_id = o.cust_id
WHERE 
    c.cust_id IN (1, 2)
GROUP BY 
    c.cust_id, c.first_name, c.last_name
ORDER BY 
    c.cust_id;

语句细节解释

  • LEFT JOIN:确保即使指定客户没有订单,也能保留其基础信息(此时订单数量和总金额会显示为0,通过COALESCE处理)。如果确定目标客户都有订单,也可以用INNER JOIN,但LEFT JOIN兼容性更强。
  • WHERE子句:精准筛选cust_id为1和2的客户,避免无关数据参与计算。
  • GROUP BY:按客户的唯一标识(cust_id)及姓名字段分组,保证每个客户只返回一条聚合结果。DB2要求SELECT中未使用聚合函数的字段必须出现在GROUP BY中。
  • 聚合函数:
    • COUNT(o.order_id):统计有效订单数量(用order_id而非*,避免统计NULL值)。
    • COALESCE(SUM(o.amount), 0):计算订单总金额,若客户无订单则返回0而非NULL,更符合业务展示需求。

执行结果验证

运行上述语句后,将得到与期望完全一致的输出:

cust_id | first_name | last_name  | order_count | order_total
--------------------------------------------------------------
1       | jim        | smith      | 1           | 12.00
2       | carol      | angelo     | 3           | 22.00

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 19:22:46