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

编写SQL查询,从给定数据库返回指定格式的客户订单聚合数据

需求说明

现有如下数据库表及数据:

CustomerType表

CustomerTypeIdCustomerTypeDisplayName
1个人客户
2企业客户

Customer表

CustomerIdCustomerNameCustomerTypeId
1John Smith1
2Peterson Ltd2
3Paul Taylor1
4Janet Peters1

Order表

OrderIdCustomerIdOrderDate
112010-01-01
242010-01-02
322010-01-02
422010-02-10
522010-03-05
612011-10-01
742011-11-01
822012-05-01

需要编写一条SQL查询语句,返回包含客户名称、客户类型显示名、订单数量、最早订单日期的结果集(示例为John Smith的记录,实际需返回所有符合条件的客户数据):

CustomerNameCustomerTypeDisplayNameNumberOfOrdersEarliestOrderDate
John Smith个人客户22010-01-01

解决方案

通过多表关联结合聚合函数即可实现需求,SQL语句如下:

SELECT
    c.CustomerName,
    ct.CustomerTypeDisplayName,
    COUNT(o.OrderId) AS NumberOfOrders,
    MIN(o.OrderDate) AS EarliestOrderDate
FROM
    Customer c
INNER JOIN
    CustomerType ct ON c.CustomerTypeId = ct.CustomerTypeId
LEFT JOIN
    [Order] o ON c.CustomerId = o.CustomerId
GROUP BY
    c.CustomerName, ct.CustomerTypeDisplayName
HAVING
    COUNT(o.OrderId) > 0; -- 若要包含无订单的客户,可删除此条件

说明

  1. 用INNER JOIN关联Customer和CustomerType表,获取客户的类型信息;
  2. 用LEFT JOIN关联Order表,确保无订单的客户也能被查询到(若只需要有订单的客户,可改为INNER JOIN);
  3. 通过COUNT(o.OrderId)统计订单数量,MIN(o.OrderDate)提取最早订单日期;
  4. GROUP BY按客户名称和类型显示名分组,保证聚合结果对应到单个客户;
  5. HAVING子句过滤掉无订单的客户,不需要的话直接删除即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 16:32:31