銀河鉄道

SQL|SELECT FROM の処理順をExcel方式で確認する

サムネイル
sqlprocessingorder
SQLの
処理順を
確認する
SELECT 商品名, SUM(小計) AS 小計
FROM 売上データ
WHERE 商品名 IN ('リンゴ', 'バナナ', 'パイナップル')
GROUP BY 商品名
HAVING SUM(数量) >= 10
ORDER BY 小計 ASC;

これは
何をやってるの?

Excelのやり方で
確認してみよう

FROM( + JOIN

Excel例)表を作成する(VLOOKUPでJOINする

まずは
表の準備

Create a table

WHERE

Excel例)フィルタで不要な行を削除する

たとえば
メロンを削除する場合
(バナナ・リンゴ・パイナップルを残す)

Filter out unnecessary rows
WHERE は 行フィルタ
  • WHERE = 行を選択するもの
  • どの行が必要で、どの行が不要なのか

GROUP BY

Excel例)ピボットテーブルで集計する

ピボットテーブルは
グループごとに集計を出す役割

Summarize data using a pivot table
GROUP BY は ピボットテーブル
  • 個々の値ではなく、まとめて表示する

HAVING

Excel例)ピボットテーブルに対して、さらに絞り込む

たとえば
「数量が10個以上の行だけ残す」

Apply additional filters to the pivot table
HAVING は ピボットテーブルに対するフィルタ
  • グループごとの集計に、さらに条件を追加する

SELECT

Excel例)必要な列だけ表示する

最終的に
使う列だけ残す

Display only the necessary columns
SELECT は 列フィルタ
  • 列は最後に選ばれる
  • 見た目とは逆
    • コード上はSELECTが先に書かれるが
    • 実際は最後にフィルタされている

「SELECT xxx FROM xxx」
ついSELECTが先なのかと思うけど
実際の処理順序は違う

ORDER BY

Excel例)最終結果をソート(並び替え)する

ASCで
小さい順に並べる

Sort the final results
ORDER BY は 最終見た目
  • 表示してもいいと判断された行列の中で
  • どの順で見せるかを決めるラストステップ
  • ASC:昇順
  • DESC:降順

参考文献

  • Joe Celko’s SQL for Smarties: Advanced SQL Programming 
  • 達人に学ぶ SQL徹底指南書(ミック)
  • 達人に学ぶDB設計徹底指南書(ミック)

Build the structure first, filter the rows second, and shape the columns last.
まず構造を作り、次に行を絞り、最後に列を整える

— Anonymous

構造→行→列

この順序

著者

author
月うさぎ

編集後記:
この記事の内容がベストではないかもしれません。