SQL 道场
返回路线图

MODULE 2 / 初级

关联与聚合

把多张表连起来、把多行并成一行:JOIN / GROUP BY / HAVING。

关联与聚合:连表与分组统计

JOIN 把两张表按关联键拼起来:

SELECT c.name, o.amount
FROM customers c
JOIN orders o ON o.customer_id = c.id;
  • INNER JOIN 只留两边都匹配的行;LEFT JOIN 保留左表全部,右表缺失处填 NULL。

聚合把多行压成一行(count / sum / avg / max / min),常配 GROUP BY 分组:

SELECT customer_id, sum(amount) FROM orders GROUP BY customer_id;
  • 过滤"分组后的结果"用 HAVING;WHERE 过滤行、HAVING 过滤组。
  • 当心 NULL:count(列) 不会数 NULL,sum/avg 也忽略 NULL。

练习(10)

  1. 1.每位客户的订单数难度 2
  2. 2.消费满 300 的客户难度 3
  3. 3.订单对应的客户名难度 2
  4. 4.没下过单的客户难度 3
  5. 5.全站订单总数与总额难度 1
  6. 6.每个城市的客户数难度 2
  7. 7.每位客户的最大单笔难度 3
  8. 8.最大的一笔订单难度 1
  9. 9.回头客(≥2 单)难度 3
  10. 10.每位客户的总消费(含 0)难度 4