SQL学習ログ SELECT, WHERE, ORDER BY, GROUP BY, HAVING

久しぶりに勉強して脳みそが疲れているので
忘れないようにアウトプットだ
インプットとアウトプットはいつでもセットでいきましょう

この人のyoutube見ながらやったよ。すごい時代だ。勉強が無料だなんて。言い訳ができない。食らいついて生きていかないと・・・
今回はDB Browser for SQLiteを使っていくよ〜

SQLってなに


・SQLとは、データベース言語。プログラミング言語ではない。
・でも、プログラミングするにあたってデータベースは使われているから、プログラミングするとしても必須だよ

テーブルってなに


・エクセルのBookみたいなもの
・縦方向、列方向は「カラム」
・横方向、行方向は「レコード」

SELECT :列を取り出す

SELECT カラムA FROM テーブルA;

意味:テーブルAからカラムAを取り出してね

SELECT カラムA , カラムB FROM テーブルA

意味:テーブルAからカラムAとBを取り出してね
(複数取り出したいはカンマでつなぐ)

SELECT カラムA as '新A' FROM テーブルA

意味:テーブルAからカラムAと取り出してね。項目名は新Aとして。

SELECT * FROM テーブルA

意味:テーブルAから全部のカラムを取り出してね。

WHERE:行を取り出す

SELECT *
FROM テーブルA
WHERE 条件式

意味:テーブルAから条件式にあう列を全部とってきてね
(条件式に文字列を入れるときは ’’ でくくるの忘れずに)

条件書き方
 イコール =     
 以下 <=
 以上 >=
 超える >
 未満 <
 除く != 

ORDER BY:並び替え

SELECT *
FROM テーブルA
ORDER BY 並び替え条件

意味:テーブルAから全部のカラムを並び替え条件順で取り出してね。

条件書き方
 昇順 ASC (デフォルトこれなので書かなくても良い)
 降順 DESC

SELECT *
FROM テーブルA
ORDER BY カラムA , カラムB

意味:テーブルAから全部のカラムをカラムA、カラムBの順に取り出してね。(エクセルで順番にフィルターかけたみたいになる)

SELECT *
FROM テーブルA
ORDER BY カラムA DESC, カラムB ASC

意味:テーブルAから全部のカラムをカラムAは降順、カラムBは昇順で取り出してね

GROUP BY:同じ値をまとめる(グルーピング)

SELECT カラムA
FROM テーブルA
GROUP BY カラムA 

意味:テーブルAからカラムAをグループ化してね


元データ:りんご もも バナナ りんご もも もも
結果        :りんご もも バナナ

SELECT カラムA, 集計関数(集計対象カラム)
FROM テーブルA
GROUP BY カラムA 

意味:テーブルAからカラムAをグループ化して、それごとに集計してね
(集計関数は何個も付けれる 横列で出力してくれる)

集計関数の例
合計 sum
平均 avg
最小 min
最大 max
数える count

イメージ 3×3の表みたいにできる

     合計 最小 最大
りんご
もも
バナナ

SELECT count(*) 
FROM テーブルA

意味:テーブルAのデータ数を数える

HAVING:行を取りだす(グループ化した後のデータ)

SELECT カラムA、集計関数(集計対象カラムB)  
FROM テーブルA
GROUP BY カラムA
HAVING 集計関数(集計対象カラムB)で条件式

なんかもわかりにくいから具体例で

SELECT
    商品名
    , sum(売上金額)
FROM テーブルA
GROUP BY 商品名
HAVING sum(売上金額) >= 1000000

意味:テーブルAから、売上金額が100万円以上の商品名のみを取り出してね。

ここまでのまとめ

まとめた時の順番は以下の通り

SELECT グルーピングをするカラム、集計関数(集計対象カラム)  
FROM テーブル名
WHERE 条件式
GROUP BY グルーピングをするカラム
HAVING 集計関数(集計対象カラム)で条件式
ORDER BY ソート条件

https://kino-code.com/sql07-2/ から丸コピ)

疲れました。練習しないと身にならなそうだ〜。

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