筛选分组数据

AI 助力的 SQL 查询进阶

Jasmin Ludolf

Senior Data Science Content Developer

WHERE 还是 HAVING

哪些语言的影片超过20部?

  • 语言计数:聚合并分组

 

WHERE

  • 单行记录
  • 哪些单部影片满足此条件?

$$

$$

$$

HAVING

  • 分组结果
  • 哪些分组满足此条件?
AI 助力的 SQL 查询进阶

筛选分组数据

提示: 哪些语言的影片超过20部?

SELECT language, COUNT(*) AS lang_count
FROM films
GROUP BY language
HAVING COUNT(*) > 20;
|language|
|--------|
|Mandarin|
|Spanish |
|French  |
|Hindi   |
|English |

$$

  • 在以下之后筛选:
    • 分组
    • 聚合
    • 可用计数时
AI 助力的 SQL 查询进阶

为分组筛选编写提示

提示: 片名和预算中,预算高于500万

SELECT title, budget
FROM films
WHERE budget > 5000000;
|title          |budget |
|---------------|-------|
|Metropolis     |6000000|
|Duel in the Sun|8000000|
|Quo Vadis      |7623000|
|West Side Story|6000000|
...

提示: 语言及预算中,四舍五入后的平均预算高于500万

SELECT language, ROUND(AVG(budget)) AS avg_budget
FROM films
GROUP BY language
HAVING ROUND(AVG(budget)) > 5000000;
|language|avg_budget|
|--------|----------|
|Danish  |16700000  |
|None    |8250000   |
|Tamil   |150000000 |
...
AI 助力的 SQL 查询进阶

组合筛选条件

提示: 显示2000年及以后、平均片长超过80的、影片数超过5部的语言

AI 助力的 SQL 查询进阶

组合筛选条件

提示: 显示自2000年起影片数超过5部、且平均片长超过80的语言

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films

WHERE release_year >= 2000
GROUP BY language
AI 助力的 SQL 查询进阶

组合筛选条件

提示: 显示超过5部影片、自2000年起,且平均片长超过80的语言

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films
WHERE release_year >= 2000
GROUP BY language

AI 助力的 SQL 查询进阶

组合筛选条件

提示: 显示超过5部影片、自2000年起,且平均片长超过80的语言

SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films
WHERE release_year >= 2000
GROUP BY language

HAVING COUNT(*) > 5 AND ROUND(AVG(duration)) > 80;
|language|film_count|average_duration|
|--------|----------|----------------|
|Mandarin|26        |112             |
|Japanese|10        |114             |
|Spanish |37        |107             |
...
AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝ GROUP BY(及聚合)➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝ GROUP BY(及聚合)➝ HAVING ➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝ GROUP BY(及聚合)➝ HAVING ➝ SELECT ➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝ GROUP BY(及聚合)➝ HAVING ➝ SELECT ➝ ORDER BY ➝

装配线

AI 助力的 SQL 查询进阶

执行顺序

$$

FROM ➝ WHERE ➝ GROUP BY(及聚合)➝ HAVING ➝ SELECT ➝ ORDER BY ➝ LIMIT

装配线

AI 助力的 SQL 查询进阶

筛选提示语

两者皆可:2000年及以后、平均片长超过80的影片

WHERE:单条记录

  • 2024年后上映的片名
  • 预算高于500万

HAVING:涉及聚合

  • 平均预算超过10000的语言
  • 影片数量大于5

纸上的钢笔

AI 助力的 SQL 查询进阶

迭代式提示

$$

1) 从小处开始

2) 检查结果

3) 继续提示以补充细节

4) 重复!

3D 气泡对话图:一个写着 AI,另一个是省略号

AI 助力的 SQL 查询进阶

开始练习!

AI 助力的 SQL 查询进阶

Preparing Video For Download...