Skip to content

第 4 站:JOIN、聚合与结果粒度 ​

← 第 3 站 | 专题笔记 | 练习答案

本站目标 ​

先定义“一行代表什么”,再组合 JOIN 和聚合。ON 决定匹配,WHERE 过滤连接后的行;对外连接而言位置会改变保留语义。

sql
USE mysql_course;
SELECT c.customer_id, COUNT(o.order_id) AS order_count
FROM customer AS c
LEFT JOIN sales_order AS o ON o.customer_id = c.customer_id
GROUP BY c.customer_id;

真实边界 ​

一对多 JOIN 会放大行数;多个一对多关系直接相连可能产生乘积并让金额重复。先按正确粒度预聚合。

无答案练习 ​

保留没有订单的客户,同时只统计已支付订单。

进入专题笔记

用心记录每一步成长