#内容
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の最初に学ぶ基本をまとめました。
コマンドを組み合わせることで、例に出したよりもさらに色々な分析ができます