見出し画像

SQL基礎~③GROUP BY

ぜひスキ・フォローをお願いします❗
励みに頑張っています✨

■前回振り返り

前回はWHERE句を勉強したので、今回はGROUP BYを勉強しよう。
前回までの情報だとイメージわかなくなってきたので、国の情報に情報を変えていこう。
※全世界の都市名などは入っていなくて、数十行に適当にまとまっている感じ。(わかりづらいけども、堪忍)

画像3

■GROUP BY

指定した列の内容ごとにまとめてくれる機能。

DISTINCT:重複削除だけが目的の時に使う
GROUP BY:重複削除の結果に対して、さらに処理を加えたい場合に使う

集計関数と一緒に使うことも結構多い。

【集計関数】
SUM:合計
COUNT:レコード数(行)
AVG:平均
MAX:最大値
MIN:最小値


早速、具体例に移りたいのだが、ここら辺から、ちょっとづつ間違いが生じてくるポイントかと思う。
いろいろ組み合わせで使うので、構文を言語化するのが難しいのだが、

GROUP BY 列名

すると、指定した列の重複したデータが削除されて一つに絞られるイメージだ。

仮に、上記データベースの国名でGROPU BYを用いた場合、

SELECT * FROM info GROUP BY country;

こうすると無理くり表示するとこんなイメージになる。

画像3

国名はまとめられるのだが、
「SELECT * ・・・」としているので国名でまとめたときに、
都市名が一つ?
人口はどこの?
というようにこれは正しくない指示(クエリ)となっている。

国名でまとめたい場合、国だけを抽出するなら、
人口は合算になることをイメージしているのであれば、それも指示しなければならない。

イメージしよう。上司から呼び出しを受ける・・・

上司「データベースから、国ごとの人口と都市数を取って報告して」
私「ググれば?」

とは言えないので、出力してみよう。
まずは結果のイメージから。

画像3

つづいて構文

SELECT country,SUM(population) ,COUNT(city)
FROM north_american_cities
GROUP BY country;

ここで、都市数が3以上という風に条件をさらに追加したいときは、

SELECT country,SUM(population) ,COUNT(city)
FROM north_american_cities
GROUP BY country;
HAVING COUNT(city) >= 3

とすることができる。

WHEREで指定できるんでは?
と思うかもしれないが、集計関数の結果を条件付けするのは
HAVINGでしかできない。(MySQLでは)

ということで、今回はGROUP BYを中心に見ていったけど、
また遅くなった。寝よう。
次回はJOINかなーー。

■関連記事

【SQL関連】
・いつの間にかタイプワイルド
・SQL基礎~
・SQL基礎~②
・SQL基礎~③ ←本記事

【エクセル・GAS関連】
・つまため第1話 
・つまため第2話 
・つまため第3話 
・つまため第4話
・つまため第5話
・つまため第6話
・【GAS/スプレッドシート/カレンダー】シフト登録&更新が面倒なので、自動化するついでに、HTMLを使ってダイアログをオリジナルで作成する件

【RPA関連】
・RPAどうなん?(営業部門)
・RPAつまづいたシリーズ①
・RPAって?信じていいの!?導入したら効果でる??RPA開発者が徹底分析!

【WEB広告関連】
・クリ調べ第1話
・クリ調べ第2話
・ど素人、マーケターへの道~Googleアナリティクス編【第1話】~
・ど素人、マーケターへの道~Googleアナリティクス編【第2話】~
・ど素人、マーケターへの道~Googleアナリティクス編【第3話】~


【投稿者の人となり関連】
・アトピー奮闘記
・ポケットに入れてたiphoneが勝手に写真を開いていたので、思い出トラベルする件~客室露天風呂は正義~
・コールドクターを呼んだ話。子供の目がパンパンで・・・・※子育て世帯で知らない方!ぜひ見て※


いいなと思ったら応援しよう!