在 SQL 里,聚合函数 (aggregate functions)(比如 COUNTMAXMINAVGSUM)的核心作用就是:

举例 1:没有 GROUP BY

SELECT COUNT(*), MAX(age)
FROM student;

举例 2:有 GROUP BY

SELECT dept_name, COUNT(*), MAX(age)
FROM student
GROUP BY dept_name;

聚合函数本质

Filter

SELECT
  athletes.country_code,
  COUNT(*) FILTER (WHERE medal_info.name = 'Gold Medal')   AS gold_medal,
  COUNT(*) FILTER (WHERE medal_info.name = 'Silver Medal') AS silver_medal,
  COUNT(*) FILTER (WHERE medal_info.name = 'Bronze Medal') AS bronze_medal
FROM medals
INNER JOIN medal_info
  ON medals.medal_code = medal_info.code
INNER JOIN athletes
  ON medals.winner_code = athletes.code
WHERE athletes.country_code = 'USA'
GROUP BY athletes.country_code;