グループ化データのフィルタリング

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年以降で、平均上映時間が80を超え、かつ映画が5本超の言語を表示

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

WHERE release_year >= 2000
GROUP BY language
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クエリ

フィルタの組み合わせ

プロンプト: 2000年以降で、映画が5本超平均上映時間が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クエリ

処理の順序

$$

FROMWHERE

組立ライン

AIで学ぶ中級SQLクエリ

処理の順序

$$

FROMWHEREGROUP BY(集計) ➝

組立ライン

AIで学ぶ中級SQLクエリ

処理の順序

$$

FROMWHEREGROUP BY(集計) ➝ HAVING

組立ライン

AIで学ぶ中級SQLクエリ

処理の順序

$$

FROMWHEREGROUP BY(集計) ➝ HAVINGSELECT

組立ライン

AIで学ぶ中級SQLクエリ

処理の順序

$$

FROMWHEREGROUP BY(集計) ➝ HAVINGSELECTORDER BY

組立ライン

AIで学ぶ中級SQLクエリ

処理の順序

$$

FROMWHEREGROUP BY(集計) ➝ HAVINGSELECTORDER BYLIMIT

組立ライン

AIで学ぶ中級SQLクエリ

フィルタのプロンプト

両方: 2000年以降で平均上映時間が80超の映画

WHERE: 個別レコード

  • 2024年以降に公開の作品名
  • 予算が500万超

HAVING: 集計に基づく

  • 平均予算が10000超の言語
  • 映画数が5超

紙とペン

AIで学ぶ中級SQLクエリ

反復的プロンプト

$$

1) 小さく始める

2) 結果を確認

3) 詳細を追加して再プロンプト

4) 繰り返す

AIと三点リーダーの吹き出しの3Dイラスト

AIで学ぶ中級SQLクエリ

練習の時間です!

AIで学ぶ中級SQLクエリ

Preparing Video For Download...