見出し画像

【初心者向け】SQL入門!!③WHERE句とGROUP BY句を使いこなす!

ステップ①では、SQLはいったいどのようなものなのか?何ができるのか?を解説し、
ステップ②では、最速でマスターするには型で覚えてしまおうといった内容でした。

ステップ③ではいよいよ実践的な内容へと踏み込んでいきます!
前説はこれくらいに早速やっていきましょう!

WHERE句

ステップ②でも簡単にご紹介いたしましたが、WHERE句は、指定したカラム内に条件をつけて、いらないものを除外できます。Excelのフィルターのような感じです。またWHERE文はいくらでも条件をつけることができます。

今回は下記のテーブルを使用いたします!

代表的な演算子

実際に書いてみよう!


SELECT * -- *=すべてのカラムを表示
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE unit_price =500;

数値ではなくても使用できます!
また複数条件を組み合わせることも可能です!

SELECT * 
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE name_2 = "taro" and
unit_price <= 1500;

またSELECT句内に条件となるカラムがなくても使用可能です!(変わりにくいですが…)

SELECT name_1,name_2
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE quantity = 10;

このように演算子使用することによって、自分が欲しいデータの形に加工することができます。

応用的な演算子

実際に使ってみましょう!

AND

色々な条件を付けたい場合は、andで繋げていきます!
あ、ちなみに大文字小文字どちらでも回りますので、やりやすいほうで行ってください!

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE quantity = 10 and
unit_price =1000;

OR

ORは同じ項目に対し複数条件でフィルタする際に使用することが多いです!
例として、名前に「九郎」又は「次郎」が入っているという条件にする場合は…↓

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE name_2 = "kurou" or
name_2 = "jiro";

※ORのNG例

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE name_2 = "kurou" or
quantity = 8;

AND=~~且つ~~
OR=~~または~~
しっかり使い分けないとQueryが回ってくれないので注意!!

BETWEEN a AND b

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE quantity between 2 and 3;

IN

INはORと似ています!
ORとの使い分けとして、条件が多い際に使用するといいと思います!

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE name_2 in("kuro","ichiro");

LIKE

LIKEはニアリーイコールのようなニュアンスで覚えるといいと思います!
またLIKEの場合、「%」と「_」を使用するシーンが多いです!
例として、都道府県の中で「川」がつく都道府県を抽出条件とします。
その場合、
・「%」都道府県 LIKE  "%川県"
 ↳香川県、神奈川県、石川県
・「_」都道府県 LIKE  "_川県"
 ↳香川県、石川県
なんとなく違いが分かりましたか?
「%」の場合、「~川県」と続く値をすべて持ってこい
「_」の場合、「_」の数にあった値をすべて持ってこいとなります!
「_」を2つつけた場合は、神奈川県のみが対象になるということですね!

SELECT *
FROM `sqltest-000.t_sqltest.test_sql` 
WHERE name_2 like "____ro" and --(アンダーバー4つ)
quantity <= 3;

GROUP BY句

ステップ②でもご紹介させていただきましたがおさらいです!
GROUP BYは、テーブル内の同じレコードをまとめてくれる役割がございます。

SELECT name_2,count(*) as tensu
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2

上記のようにグループ化したい要素名をSELECT句とGROUP BY句内に入力してあげるってイメージですね!
ただ一点問題が…
グループ化した際、他のSELECT句内の要素を集合関数を使用しなければならないという点です。

  • OK … SELECT 【グループ化要素】,集合関数(【その他要素】)

  • NG … SELECT 【グループ化要素】,【その他要素】

下記が集合関数の一覧です!

MAX

文字の通り、一番大きい値を持ってこいという句に使用します!

SELECT name_2 as name,MAX(unit_price)as unit_price
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2;

MIN

MINは逆に、一番小さい値を持ってこいという句に使用します!

SELECT name_2 as name,MIN(unit_price)as unit_price
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2;

AVG

AVGはAVERAGE(平均)の略ですね!

SELECT name_2 as name,AVG(unit_price)as unit_price
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2;

SUM

エクセル関数でも使用することの多いSUMは、合計の値になります!

SELECT name_2 as name,SUM(unit_price)as unit_price
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2;

COUNT

COUNTもエクセル関数で使用することが多いですね!
こちらは項目数を数える際に使用します!

SELECT name_2 as name,count(unit_price)as unit_price --(*)でも大丈夫!!
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2;

ついでにHAVINGも覚えてしまおう!!

HAVINGとは、GROUP BY句を使用したときのみ使用します。
GROUP BY句によってグループ化されたレコードに対して取得条件を指定する役割がございます!
グループ化した後の値に条件を付ける際、必要となるわけですね!
例として、「グループ化した金額の合計値の~~以上のみ欲しい」等です。
順番は下記になります!

  • SELECT 

  • FROM

  • WHERE

  • GROUP BY

  • HAVING

  • ORDER BY

  • LIMIT

SELECT name_2 as name,count(unit_price)as unit_price --(*)でも大丈夫!!
FROM `sqltest-000.t_sqltest.test_sql`
GROUP BY name_2
HAVING unit_price >10;

こんな感じです!
難しくないので順番と使用シーンだけ頭の片隅に入れておきましょう!!

いかがだったでしょうか。
ここではできるだけわかりやすく簡潔にお伝えしているので、もっと詳しく知りたいと思いましたら、色々なサイトへアクセスし情報をキャッチアップしていきましょう!

ステップ④では、今まで登場しておらず覚えると便利な構文をご紹介させていただければと思っております!

最後までご覧いただきありがとうございました!

この記事が参加している募集

#マーケティングの仕事

6,963件

この記事が気に入ったらサポートをしてみませんか?