【SQL】基本のまとめ2


内容

SQLを勉強し始めたので、これまでに学んだ知識をまとめます。
長くなったので【SQL】基本のまとめ1とこの記事に分けました。

この記事の内容

  • 便利なコマンド
    • AND, GROUP BY, HAVING, DISTINCT
  • 結果を見やすくするコマンド
    • ORDER BY, LIKE, LIMIT, AS
  • より多くのデータを使うためのコマンド
    • サブクエリ, JOIN

以下の内容を知りたい方は【SQL】基本のまとめ1

  • SQLとは
  • データベース内の名称
  • 基本のコマンド
    • SELECT, FROM, WHERE, NOT
  • 四則演算や集計のコマンド
    • AVG, SUM, COUNT, MIN, MAX

下の例で用いるデータのテーブル

cakes

id type name price cost
1 ケーキ ショートケーキ 300 100
2 ケーキ モンブラン 400 200
3 ケーキ チーズケーキ 200 50
4 タルト フルーツタルト 400 300
5 ゼリー コーヒーゼリー 200 50
6 タルト チョコレートタルト 300 70

sales_january

cake_id total
1 56
2 80
3 35
4 67
5 98
6 23

便利なコマンド

条件を複数入れる
- かつAND またはOR
: 300円以下のケーキを知りたい

SELECT name
FROM cakes
WHERE type = "ケーキ" AND price <= 300;

グループ別にデータを見る
- GROUP BY
: 商品の種類別の合計金額を知りたい

SELECT type, SUM(price)
FROM cakes
GROUP BY type;

グループ別に条件にあったデータを見る
- HAVING
: 平均コストが150円以下の商品タイプを知りたい

SELECT type, AVG(cost)
FROM cakes
GROUP BY type
HAVING AVG(cost) <= 150;

重複なくデータを取り出す
- DISTINCT(カラム名)
: どんな種類の商品があるか知りたい

SELECT DISTINCT(type)
FROM cakes;

結果を見やすくするコマンド

データの並び順を決める
- 降順 DESC 昇順 ASC
: 値段が高い商品から順に並べる

SELECT name, price
FROM cakes
ORDER BY price DESC;

一定のキーワードを含むデータを取り出す
- LIKE %%はSQLにおけるワイルドカード。どの文字列にも一致することを指す)
: 名前に「ケーキ」を含む商品を知りたい

SELECT name
FROM cakes
WHERE name LIKE "%ケーキ%";

取り出す件数を制限する
- LIMIT
: 値段が安い上位5商品を知りたい

SELECT name, price
FROM cakes
ORDER BY price ASC
LIMIT 5;

カラムの名前を変更して出力する
- AS
: price-costを利益という名前で出力する

SELECT name, price - cost AS "利益"
FROM cakes

より多くのデータを使うためのコマンド

サブクエリを用いて条件を指定する
- ()
: チョコレートタルトよりも安い商品の名前と値段を知りたい

SELECT name, price
FROM cakes
WHERE price < (
  SELECT price
  FROM cakes
  WHERE name = "チョコレートタルト"
)
;

複数のテーブルを用いて分析を行う
- JOIN テーブル名 ON 結合の条件 テーブル名.カラム名
- 複数のテーブルに同じカラム名がある場合は、SELECTの後もテーブル名.カラム名で指定する
: sales_januaryにある、商品が売れた個数を並べて出力したい

SELECT name, total
FROM cakes
JOIN sales_january
ON cakes.id = sales_january.cake_id;

まとめ

SQLの最初に学ぶ基本をまとめました。
コマンドを組み合わせることで、例に出したよりもさらに色々な分析ができます