Oracle SQL三表关联实现按订单类型统计订单量及去重客户数的方法
实现该统计需求的SQL查询方案
核心思路
不需要关联CUSTOMERS表即可完成统计,你需要用到的客户ID字段已经存在于CUSTOMERS_ORDERS关联表中,直接关联订单表和关联表即可,执行效率更高。
具体SQL代码
SELECT o.ORDER_TYPE AS order_type, COUNT(o.ORDER_ID) AS `Count(orders)`, COUNT(DISTINCT co.CUSTOMER_ID) AS `count(distinct(customer_id))` FROM ORDERS o INNER JOIN CUSTOMERS_ORDERS co ON o.ORDER_ID = co.ORDER_ID GROUP BY o.ORDER_TYPE;
补充说明
- 如果你需要统计没有关联任何客户的订单,把上面的
INNER JOIN改成LEFT JOIN即可,这类订单的客户计数会显示为0 - 如果你的数据库对字段大小写敏感,注意调整字段名和表名的大小写匹配实际表结构
内容的提问来源于stack exchange,提问作者Al A
相关产品推荐
相关产品推荐

