使用 AI 進行 SQL 查詢進階
Jasmin Ludolf
Senior Data Science Content Developer
哪些語言的電影超過 20 部?
WHERE
$$
$$
$$
HAVING
Prompt: 哪些語言的電影超過 20 部?
SELECT language, COUNT(*) AS lang_count
FROM films
GROUP BY language
HAVING COUNT(*) > 20;
|language|
|--------|
|Mandarin|
|Spanish |
|French |
|Hindi |
|English |
$$
Prompt: 片名與預算,且預算高於 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|
...
Prompt: 語言與預算,且四捨五入後的平均預算高於 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 |
...
Prompt: 顯示自 2000 年起部數超過 5 部、且平均片長超過 80 的語言
Prompt: 顯示自 2000 年起部數超過 5 部、且平均片長超過 80 的語言
SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration FROM filmsWHERE release_year >= 2000GROUP BY language
Prompt: 顯示自 2000 年起「部數超過 5 部」、且平均片長超過 80 的語言
SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration
FROM films
WHERE release_year >= 2000
GROUP BY language
Prompt: 顯示自 2000 年起「部數超過 5 部」、且「平均片長」超過 80 的語言
SELECT language, COUNT(*) AS film_count, ROUND(AVG(duration)) AS average_duration FROM films WHERE release_year >= 2000 GROUP BY languageHAVING COUNT(*) > 5 AND ROUND(AVG(duration)) > 80;
|language|film_count|average_duration|
|--------|----------|----------------|
|Mandarin|26 |112 |
|Japanese|10 |114 |
|Spanish |37 |107 |
...
$$
FROM ➝

$$
FROM ➝ WHERE ➝

$$
FROM ➝ WHERE ➝ GROUP BY(及彙總)➝

$$
FROM ➝ WHERE ➝ GROUP BY(及彙總)➝ HAVING ➝

$$
FROM ➝ WHERE ➝ GROUP BY(及彙總)➝ HAVING ➝ SELECT ➝

$$
FROM ➝ WHERE ➝ GROUP BY(及彙總)➝ HAVING ➝ SELECT ➝ ORDER BY ➝

$$
FROM ➝ WHERE ➝ GROUP BY(及彙總)➝ HAVING ➝ SELECT ➝ ORDER BY ➝ LIMIT

兩者皆可:自 2000 年起的電影,且平均片長超過 80
WHERE:個別紀錄
HAVING:涉及彙總

$$
1)從小處著手
2)檢查結果
3)再提示以補充細節
4)重複進行!

使用 AI 進行 SQL 查詢進階