小学生でもわかるSQLのGROUP BYと集計関数【SQL講座②】

だれでもエンジニア / 山浦清透
22 Feb 202108:22

Summary

TLDRこの動画はSQLのグループバイと集計関数について、初心者でもわかりやすく解説しています。 グループバイがなぜ必要なのか、どんな時に使うのかを例を示しながら説明しています。 また、グループバイでつまずきやすいポイントや、エラーを避けるコツについても丁寧に解説しています。 最後に、集計関数の使い方も説明しているので、グループバイと集計関数で悩むことがないはずだと締めくくっています。

Takeaways

  • 😊 SQL のグループバイと集計関数の使い方を解説
  • 📝 カウントでレコード数を数えられる
  • 🔎 グループバイで同じ値のデータをまとめられる
  • ❗️ 軸になる列はすべて group by で指定する
  • 📈 集計関数で値を集計できる
  • 😮 平均は average、最大値は max、最小値は min
  • 💡 グループバイと集計関数を組み合わせれば便利
  • ✨ SQL 初心者でも分かるように解説
  • 🎉 グループバイの悩みはなくなるはず
  • 👍 動画の最後まで見てね

Q & A

  • グループバイでデータをまとめる際のポイントは何ですか?

    -グループバイでデータをまとめる際のポイントは、軸となるカラムはすべてorder byで指定しておくことです。これをしないとSQLがどの値を入れればいいのか判断できないため、エラーになってしまいます。

  • グループバイと集計関数の違いは何ですか?

    -グループバイは同じ値のデータをまとめる機能です。一方、集計関数は値を集計する機能で、平均値や最大値、最小値、合計値などを求めることができます。グループバイでまとめたデータに対して、集計関数で集計を行うことが多いです。

  • レコード数を数えるにはどの関数を使いますか?

    -レコード数を数えるにはCOUNT関数を使います。この関数はテーブル内のレコードの数を数え上げてくれます。

  • グループバイがエラーになる理由は何ですか?

    -グループバイでまとめる際に、軸となるカラムが不足していると、SQLがそのカラムに何の値を入れればいいのか判断できなくなり、エラーになってしまいます。すべての軸のカラムを指定しておく必要があります。

  • 日付ごとにデータを集計したい場合、どのように書けばいいですか?

    -日付ごとにデータを集計したい場合は、日付を示すカラムでグループバイして集計関数を適用することで実現できます。例えば、登録日付ごとにユーザー数を集計したい場合は、`SELECT registration_date, COUNT(user_id) FROM users GROUP BY registration_date;`のように書けます。

  • グループバイで同じ値のデータをまとめる理由は何ですか?

    -グループバイでデータをまとめる理由は、複数レコードにまたがるデータに対して集計などの処理を効率よく行うためです。日付や性別、地域などでグループ化して操作することで、全体的な傾向をつかむことができます。

  • 集計関数の利点は何ですか?

    -集計関数の利点は、複数レコードのデータを簡単に集計できる点です。平均値、最大値、最小値、合計などを求める処理を SQL 内で完結させることができるため、アプリケーション側で集計ロジックを実装する手間が省けます。

  • グループバイでエラーが発生した場合、デバッグの方法を教えてください。

    -グループバイの結果が思った通りにならない場合は、まずSQLの実行結果を確認します。次にテーブルのサンプルデータを直接確認し、グループバイで指定したカラムの値と照らし合わせて、ロジックが正しいかどうかを検証していきます。行ごとの挙動を追えるサンプルデータが確認できれば、原因特定がしやすくなります。

  • 日付データを集計する際の注意点を教えて下さい。

    -日付で集計する際は、時刻の部分まで含めると思わぬ結果になることがあるので注意が必要です。日付だけで集計したい場合は、CASTやDATE関数で時刻を切り捨てたり、境界値の扱いに注意する必要があります。このへんの細かい挙動を理解しておくことで、思わぬエラーを防ぐことができます。

  • グループバイとJOINを組み合わせるメリットは何ですか?

    -グループバイとJOINを使うことで、複数のテーブルにまたがるデータを効率よく集計することができます。例えば、商品マスタと売上データをJOINして、商品ごとの売上合計を求める、といった処理が実現できます。テーブル設計に合わせた柔軟な集計が可能になります。

Outlines

00:00

Title for Paragraph 1

Detailed summary for Paragraph 1

05:02

Title for Paragraph 2

Detailed summary for Paragraph 2

Mindmap

Keywords

💡グループバイ

グループバイはSQLでデータをまとめる関数です。このビデオでは、グループバイを使う理由と方法について解説しています。例えば、日付ごとにデータをまとめたり、チャネルごとにデータをまとめたりできます。グループバイはデータ集計に必須の機能です。

💡集計関数

集計関数とは、データを集計するための関数です。平均値、最大値、最小値、合計などを算出できます。このビデオでは、グループバイと組み合わせて使用する方法が解説されています。例えば、日付ごとの平均年齢を算出するなどです。

💡カウント

カウントはレコード数を数える集計関数です。このビデオでは、ある日付に登録された人数を数える例が出ています。グループバイと組み合わせれば、日付やチャネルごとの登録者数が集計できます。

💡エラー

グループバイを使うとき、軸となる列をすべて指定しないとエラーになることが説明されています。これはSQLがグループ化の基準が不明確だと判断したためです。エラーを避けるには、グループ化の軸となるすべての列をorder byで指定する必要があります。

💡初心者

このビデオは、SQLのグループバイがよく分からない初心者を対象に、小学生レベルでも理解できるよう丁寧に解説しています。実際のビジネスシーンを例に、グループバイの必要性と基本的な使用方法が説明されています。

💡上司

ビデオでは、部下の立場の視聴者が上司からデータ集計を求められるシチュエーションを設定しています。これにより、グループバイなどの関数が実際の業務でどのように使われるのかがイメージしやすくなっています。

💡日付

日付はグループバイの代表的な使用例です。日付ごとにデータをまとめて集計することで、日次や週次、月次の傾向を把握できます。ビデオでも、日付ごとの登録者数や平均年齢などを集計する例が示されていました。

💡チャネル

登録経路を表すチャネルも、グループバイのグループ化対象の列としてよく使われます。Web経由と広告経由での登録者数などをチャネルごとに集計できるため、マーケティング分析などに有用です。

💡ストーリー

ビデオ全体が部下と上司の会話というストーリー仕立てになっているのが特徴です。これにより視聴者は会話の文脈の中でグループバイの使い方を順を追って理解できるように工夫されています。

💡解説

このビデオの主目的は、グループバイと集計関数の解説です。初心者向けに基本的な概念と使用方法が丁寧に説明されているのが特徴です。コメントでの質問も歓迎しているなど、分かりやすい解説を意識しているようです。

Highlights

SQLのグループバイ集計関数の重要性と基本的な理解

グループバイがデータ集計において不可欠である理由

初心者や小学生でも理解できるようにSQLの概念を解説

グループバイを使ったデータの集約方法と例

実際の業務でのグループバイの使用例とその必要性

SQLでよくあるグループバイのエラーとその原因

エラー回避のためのグループバイの正しい書き方

集計関数(COUNT, AVG, MAX, MIN, SUM)の使用方法と例

日ごとの会員登録数を出す具体的なSQLクエリの例

昨年の日ごとの登録数を集計する方法

複数の条件(日付とチャンネル)でデータをグループ化する方法

グループバイと集計関数を組み合わせた高度なデータ分析

SQLクエリの書き方でよくあるつまずきポイントとその解決策

平均年齢や最大年齢などの統計情報を出す方法

グループバイ集計関数の学習を通じてSQLスキルを向上させる

Transcripts

play00:00

同居です sql のグループバイト集計関数を小学生でもわかるように説明すると会

play00:06

です

play00:07

sql のグループ場合はデータの集計においてこれも必須なんですね

play00:12

むちゃくちゃ大事ですにもかかわらずすごくつまずきやすいポイントの一つで終え人類

play00:18

らが続出して

play00:20

ますそこで今回グループ場合はなぜ必要でどういう時に使うのか

play00:25

そしてなんで詰まっちゃうのかどう書けばいいかということを

play00:29

初心者でもね小学生でもわかるように解説していきます今回の動画最後は見て

play00:34

いただければグループバイトで悩むことは今後なくなると思います

play00:38

ちなみに s q

play00:40

写真者の頃の僕はグループ第何それって感じでしたし

play00:44

ちょっと分かるようになった後もねあれ group by を実行し機をなぜか

play00:48

エラーになると

play00:49

ででもへの南下をうまく動く時もあるなぁみたいな感じで

play00:53

この2つの違いがわかっていなくてなんとなく動いてるっていう状態だったんですよ

play00:57

もし同じようになんとなくグルー

play01:00

た場合帰ってしまっていうのがあって方いらっしゃったら是非コメント欄で教えて

play01:03

いただけると嬉しいです今日はそんなね僕と同じようにグループ場合に対して悩んでい

play01:08

たいとかまだ知らない方向けに

play01:10

実際に使う c を上司部下の音ストーリーの形式にして解説していくことで

play01:16

まあどんなと

play01:17

気にね必要でそしてなぜねえエラーになるのかどういうとこへつまずきやすいのか

play01:22

じゃあどう書けばいいのか

play01:24

そしてまたに group by とよく一緒に使うこの集計関数に関してね

play01:28

解説していきますそれではやっていきましょうさて今回あなたは上司から

play01:33

このようにはいたとします今週の日ごとの会員登録数を出せ

play01:37

で今ねデータとしてはこのメンバーつテーブルというテーブルがあってその中にね名前

play01:43

とクリエイティビティとで登録した日

play01:46

あとはちゃんねるどのチャンネルから登録したのか

play01:49

あと a 年齢っていうのが入っているテーブルがあります

play01:52

さてどういうふうにエスケール書けばこの上司のお題に答えられるでしょうか

play01:56

正解は

play01:57

ですねセレクトカウントカッコネームフロームメンバーズ

play02:02

ウェアグレーティットで=2021年2月13日みたいに書きますまずはフロー部でね

play02:08

メンバーズテーブルから選びました何を選ぶのかカウントネームってしますねこれは

play02:13

カウントでこのから部ネーム絡むの

play02:17

れっこ

play02:17

ノード数を数えるよっていう意味になりますでウェアで作った日が登録した日が

play02:22

2021年の2月13しそうすると2月13日をねデータっていうのに

play02:28

に彼らの音あるのでこれをカウントしてにっていう答えが出るわけですね

play02:33

play02:33

問題は今週の日ごとの会員登録数だったのでまたはこれをひたすらね

play02:39

2月13日2月14日2月15日2月16日っていう感じでね

play02:44

この日付をね日ごとに変えてね何体が実行すればね

play02:47

答えは出るわけですこのようにレコード数を数えたいときはカウントを使えばいいです

play02:53

play02:53

アウトはですねこういうふうにデータがあったとしたらそれがね何刑部あるのかって

play02:57

いうのをカウントしてくれます

play02:59

レコード数を数えたいときはカウントを使いましょうさてえこれでねカウント位の

play03:04

イメージ抑えたところで次にいきますね

play03:06

あなたに先ほど出したデータ上司に提出します

play03:09

すると上司がこういう風に言ってきたんですよ次は昨年の仕事の

play03:13

回登録数よこせは

play03:15

次じゃねーよ次じゃまずは0 e 奥村かつくなぁ

play03:20

しかしまぁ昨年1年間分のデータが今度はさっきみたいに気づけを変えて sql つ

play03:26

なんての365日分も行った日が暮れてしまう

play03:30

めんどくさくてやってるねーさてこういう時にどうするか

play03:33

こういう時ですね今回の本題のグループがいつかいます

play03:36

セレクトクリエイティビティとでカウントカッコネーム付

play03:40

4 members group by 句リエーティとデートします

play03:43

group by っていうのは何々でまとめるという形ですね

play03:46

クリエイティブと泥って言うから目でまとめるというふうにしますするとですね

play03:51

この栗えっとえっとデーに登場する値ごとにデータをまとめてくれるんですね

play03:56

今13一重本書16日あるので結果としては13使徒15

play04:00

16うんち会でまとめてくれますとそのまとめたものに対してカウントをするんですね

play04:06

name カラーが何かあるかとネームから13日だったら2個あって15日も2個

play04:11

割って16日も1ピックアの手に位置というふうに出るわけです

play04:15

このようにグループ帯を使うと同じ値のデータをまとめられ

play04:20

いるんですよ複数データことに集計したいときに使うのがグループ外です

play04:25

さてグループへのイメージを抑えたところでまたあなたね調子データを提出しました

play04:30

そしては乗車こういうふうに言いました

play04:32

おいとけ次は日毎の簡易登録数をチャンネル系の別に出せ

play04:37

は置いとけ車ね多いと出ちゃうまずは例だろ

play04:40

ファ

play04:41

しかし次はチャンネルけれどとかまあこれは簡単だな

play04:44

あのチャンネルケードっていうのは doko ka de 登録したかということで

play04:48

今回 web 経由でレベルの音ホームページ場から登録してきたのかアド広告系登録

play04:54

者かっていうのがねここに記録されております

play04:57

でこれは普通にやりますねこんな形になるんですねセレクトクリエイティブと

play05:01

でチャンネルカウントカップネームフローメンバーズクープ倍クリエイティブとでこれ

play05:06

はまあ日付とチャンネルごとに登録端数を出せってことなんでね

play05:11

celec てクリエイティブとデートチャンネルと後でカウントでねしてあげればね

play05:15

出そうな気がするじゃないですかでもこれねここにも書いている通りエラーになるん

play05:20

ですよ

play05:20

さてこれなー

play05:21

生来になるでしょうかこれはなぜかといいますと実はにこれ表をつくってみたらわかる

play05:26

んですね

play05:27

クリエイティブとででチャンネルというふうに表を作った時に

play05:31

さて問題ですここのチャンネルの場所には何の値が入るでしょうか

play05:36

クリエイティビティを13し見てみると web とあどっていうのがあるんですね

play05:40

ハピここには web が入るアドが入るどっちが入ります

play05:44

そうシステムね同じように悩むんです sql も同じように悩んだ結果

play05:49

これどうも何の当て起こりえたいいかわかんないぞってなるんですねそのため何の

play05:54

与えればいいかわからないから

play05:56

エラーになるんですではこれエラーにならないようにするにはどうしたらいいでしょう

play06:01

play06:01

正解はですね後1個にグループにつけクレンズグループ i クリエイティブとで

play06:06

ちゃんねるってするんですねこの2つのカラムで

play06:09

group by をまとめちゃうわけなんですよすると結果としてクリエイティブと

play06:14

でチャンネルカウントで

play06:16

クレイティット a の2月13日でチャンネルが web が

play06:19

市安曇の方は1ただにが15んチャードしかないので

play06:23

ににがちろぐんちゃん web しかないのでイチっと今こういう結果になるわけです

play06:28

ここでのポイントは軸になるからもすべて order by で指定しておくって

play06:34

ことなんですよ

play06:35

なぜ内になったかと

play06:36

言うと何の値が入るか分からないから sql だーが判断できないからエラーになっ

play06:41

たわけです

play06:41

そこで地クイならカラーのすべてオーダー敗で指定しておくことで結局そこのカラムの

play06:47

値ね

play06:47

何の値が入るかっていうのをスケールは特定できるしておくっていうのは大事なんです

play06:52

play06:52

俺ね group by 詰まる人の大半の原因のここでこれさえしっかり押さえて

play06:57

おけば今後グループあえなく悩むことはなくなるはずです

play07:00

さて苦労したあなたはねようやくねでもデータだしたよね上司に提出しました

play07:05

それと乗車こういうふうに言いました遅い日ごとの簡易登録社数の平均年齢と遅配来年

play07:11

でを出せ

play07:15

はいで屁こいてき今どうすればいいかというとこういう時に集計関数を使えます

play07:20

集計関数というのは値を集計するものですね

play07:24

例えば弱い使ってきたカウントも集計関数です

play07:27

カウントを使うとレコード数を数えれます他にもいくつかってですね

play07:31

average だと平均だし max だと祭主催

play07:35

愛知みんだと最小値差分を使うと合計値を出すことができます

play07:39

で今回日ごとの兵登録者うんね平均年齢問わず再度年齢出せっていうことだったので

play07:46

この集計関数使うとね

play07:48

セレクトのクリエイティビティと泥のアベレージで age を指定してあげて

play07:52

max で age を指定してあげると hey

play07:55

権年齢と最大の年齢というのを出すことはこういう形でねできます

play07:59

はいこれでグループバイト集計関数について解説してきました

play08:04

次回は上院について解説しますね sql こういうところでよくなりますこの辺が

play08:08

いまいち理解できないですって言うのがもしあったらねそういうふうに動画の中で講座

play08:12

として解説していきたいので是非コメント下さい

play08:15

それはこちらの動画楽しんでいただければぜひ高評価の方お願いします

play08:19

また次の動画でお会いしましょう

Rate This

5.0 / 5 (0 votes)

Do you need a summary in English?