【SQL入門講座】14. HAVING <未経験からデータサイエンティストを目指す!転職支援>

目次

「HAVING」 < グルーピングデータから特定条件で抽出する方法 >

前回グルーピングする「GROUP BY」の利用方法を教わったのですが、そのグルーピングしたデータから特定の条件でデータを抽出する方法はないのでしょうか?
WHERE句でグルーピングデータを条件指定するとエラーになってしまいます…

いい質問ですね!
グルーピングからさらに条件の抽出は「HAVING」を使用します。
では、実際のデータを用いてやってみましょう!
以下のデータは、1896年から2016年までに開催された全オリンピックのアスリートとイベントのデータです。(テーブル名:OLYMPICS_athlete_events)

・HAVING:グルーピングデータから特定条件でデータを抽出
・WHERE:テーブル内データから特定条件でデータを抽出

https://domohelp.domo.com/hc/ja/articles/360043931814-
OLYMPICS_athlete_eventsテーブル名
IDデータセット内の順番に基づいてアスリートに割り当てられたID番号
Nameアスリートの名前
Sexアスリートの性別
Ageアスリートの年齢
Heightアスリートの身長(センチメートル単位)
Weightアスリートの体重(キログラム単位)
Teamこのアスリートが所属する国
NOCアスリートが所属する国を表す3文字の略語
Gamesこのオリンピック大会の開催年と季節
Year大会の開催年
Season大会の季節(SummerまたはWinter)
Cityオリンピックが開催された都市
Sport大会の種目
Event大会の名前
Medalアスリートが獲得したメダル(獲得したメダルがない場合は「NA」)
OLYMPICS_athlete_events

まずは前回のグルーピングと集計のおさらいです。
例えば、金メダルを獲得した人の国籍ごとの平均身長を集計してみましょう。
「GROUP BY」「count」「avg」を使用します。
以下のようにSQLを記述します。

おさらい

国籍をグルーピングして、国籍ごとにレコード数を集計し、身長の平均を抽出する。
(条件:金メダル獲得者、年齢がNA値以外、Teamレコード数降順、データ数20件制限)

SELECT Team,Medal
,count(Team)
,avg(Height)
FROM OLYMPICS_athlete_events
WHERE Medal = 'Gold' AND Height != 'NA'
GROUP BY Team 
ORDER BY count(Team) DESC
LIMIT 20;
実行結果

ここからが本題です。この中から身長平均が180以上の国を抽出してみましょう。
ここで「HAVING」が登場します。

使い方

集計データから条件抽出を行う

SELECT カラム名 , 集計関数(集計カラム名)
FROM テーブル名
GROUP BY グルーピングしたいカラム名
HAVING 集計カラム名 条件;

・「HAVING」は「GROUP BY」の後に記述する

実践

国籍をグルーピングして、国籍ごとにレコード数を集計し、身長の平均を抽出する。
(条件:金メダル獲得者、身長がNA値以外、Teamレコード数降順、データ数20件制限、身長平均が180cm以上

SELECT Team,Medal
,count(Team)
,avg(Height)
FROM OLYMPICS_athlete_events
WHERE Medal = 'Gold' AND Height != 'NA'
GROUP BY Team 
HAVING avg(Height) >= 180
ORDER BY count(Team) DESC
LIMIT 20;
実行条件

なるほど〜、グルーピングして集計したデータから特定条件を用いるときはHAVINGを使用するんですね!

そういうことです。

また、コマンド実行順序は以下の順になります

演習

それでは演習をしてみましょう。

準備中

まとめ

  • グルーピングデータから特定条件の抽出:HAVING
  • 「HAVING」は「GROUP BY」の後に記述する

未経験からデータサイエンティストへ!転職支援!

ROYAL AGENT&Co.では、全コンサルタントが5年以上のキャリアコンサルティング経験を持ち、データサイエンティストやAI,DX人材のご紹介に強い転職支援を行っております。

候補者様一人ひとりのキャリアに寄り添ったご支援を心がけ、無闇に求人をご紹介するのではなく、丁寧なカウンセリングを通してご志向性にあった求人をピンポイントにご紹介させて頂いております。未経験からのデータサイエンティスト転職支援実績も多数ございます。

無理な勧誘など一切ありませんので、キャリアのご相談等、まずはお気軽にお問合せください!心よりお待ちしております。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次