[SQL学習①ー③] SQL ここまでの復習でSQL文を作成してみる

<h1>初めに</h1>
ここまでのSQL学習の復習をかねて、
実際に練習としてSQL文を作成してみます。
テーブルを３つ用意してみました。


https://qiita.com/ki_87/items/2c6e7559a5645e559388


https://qiita.com/ki_87/items/2a3dfde3d579383ee04c


<h1>SQL文を作成してみる①</h1>

以下のようなテーブル（販売記録テーブルとします。）を適当に作成しましたので、
データを取得するSQL文を作成してみます。

①２月のデータ
②①以外のデータ
③来客が３０未満のデータ
④来客が80より多いデータ
⑤最高売り上げが400以上のデータ
⑥最低売り上げが100以下のデータ
⑦３、５、７月のデータ
⑧⑦以外のデータ
⑨来客が５０以下で、外の気温が１０より低いデータ
⑩最低売り上げが１００未満か、最高売り上げが４００よりたかいデータ
11 外の気温が20-30の範囲にあるデータ
１２　データのない列のある月のデータ

![スクリーンショット 2021-10-18 14.25.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/bfe71eb7-73c0-69d9-3650-c362c836d752.png)


<details><summary>解答</summary><div>


①２月のデータ

```
SELECT *
FROM 販売記録
WHERE 月　＝　２
```
②①以外のデータ

```
SELECT *
FROM 販売記録
WHERE 月　<> ２
```

③来客が３０未満のデータ

```
SELECT *
FROM　販売記録
WHERE 来客<30
```

④来客が80より多いデータ

```
SELECT *
FROM　販売記録
WHERE 来客>80
```

⑤最高売り上げが400以上のデータ

```
SELECT *
FROM　販売記録
WHERE 最高売り上げ>=400
```

⑥最低売り上げが100以下のデータ

```
SELECT *
FROM　販売記録
WHERE 最低売り上げ<=100
```

⑦３、５、７月のデータ

```
SELECT *
FROM　販売記録
WHERE 月
IN (3,5,7)
```

⑧⑦以外のデータ

```
SELECT *
FROM　販売記録
WHERE 月
NOT IN (3,5,7)
```

⑨来客が５０以下で、外の気温が１０より低いデータ

```
SELECT *
FROM　販売記録
WHERE 来客<=50
AND　外の気温<10
```

⑩最低売り上げが１００未満か、最高売り上げが４００よりたかいデータ

```
SELECT *
FROM　販売記録
WHERE 最低売り上げ<100
OR　最高売り上げ>400
```

11 外の気温が20-30の範囲にあるデータ

```
SELECT *
FROM　販売記録
WHERE 外の気温
BETWEEN 20 AND 30
```
あるいは

```
SELECT *
FROM　販売記録
WHERE 外の気温>=20
AND 外の気温<=30
```

１２　データのない列のある月のデータ

```
SELECT *
FROM　販売記録
WHERE 来客　IS NULL
OR 最高売り上げ　IS NULL
OR 最低売り上げ　IS NULL
OR 外の気温 IS NULL
```

</div></details>



<h1>SQL文を作成してみる②</h1>

以下のような「会員登録」テーブルを作成したので、
データを引っ張ってきます。

①名前が「川」で終わる名前
②名前に「島」が含まれる名前
③名前が　「山」で始まる名前
④住所と登録店舗が一致するデータ
⑤住所と登録店舗が一致しないデータ


![スクリーンショット 2021-10-18 14.47.35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/cb44872a-9cba-fbea-2d20-402a238f499a.png)


<details><summary>解答</summary><div>

①名前が「川」で終わる名前

```
SELECT 名前
FROM　会員登録
WHERE 名前
LIKE '%川'
```

②名前に「島」が含まれる名前

```
SELECT 名前
FROM 会員登録
WHERE 名前
LIKE '%島%'
```

③名前が　「山」で始まる名前

```
SELECT 名前
FROM 会員登録
WHERE 名前
LIKE '山%'
```

④住所と登録店舗が一致するデータ

```
SELECT *
FROM 会員登録
WHERE 住所　＝　登録店舗
```

⑤住所と登録店舗が一致しないデータ

```
SELECT *
FROM 会員登録
WHERE 住所　<>　登録店舗
```

</div></details>

<h1>SQL文を作成してみる③</h1>

以下のような「成績表」テーブルを作成したので、
データをいじっていきます

![スクリーンショット 2021-10-18 15.18.32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/d5873cdc-6845-1a48-a3f0-f167940ca817.png)

①全データ取得
②以下の表を追加する
![スクリーンショット 2021-10-18 15.20.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/5d159762-4142-4228-3c4a-3fc1913ff51f.png)
③番号1863と、1763の生徒の英語の点数を81点に修正する
④次のルールで総合成績をつける
　ア：全科目が８０点以上の生徒はA
　イ：政治・倫理のどちらかが８０以上で、国語・英語のどちらかが80以上の生徒はB
　ウ：全科目が５０未満の生徒はD
　エ：それ以外をCとする
⑤いずれかの科目が０点の生徒を削除する


<details><summary>解答</summary><div>

①全データ取得

```
SELECT *
FROM　成績表
```

②以下の表を追加する
![スクリーンショット 2021-10-18 15.20.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1633266/5d159762-4142-4228-3c4a-3fc1913ff51f.png)

```
INSERT INTO 成績表
VALUES (1763,'山梨貴子',60,70,65,89,75,NULL);
INSERT INTO 成績表
VALUES (1872,'静岡花子',７0,94,85,70,80,NULL);
INSERT INTO 成績表
VALUES (1983,'東京丸子',７5,87,70,65,80,NULL);
```

③番号1863と、1763の生徒の英語の点数を81点に修正する

```
UPDATE 成績表
SET 英語　＝　81
WHERE 番号 IN (1863,1763)
```

④次のルールで総合成績をつける
　ア：全科目が８０点以上の生徒はA
　イ：政治・倫理のどちらかが８０以上で、国語・英語のどちらかが80以上の生徒はB
　ウ：全科目が５０未満の生徒はD
　エ：それ以外をCとする

```
　UPDATE 成績表
SET 総合評価 = 'A'
WHERE 数学>=80 AND 国語>=80 AND 倫理>=80 AND　　以下　省略
```

```
　UPDATE 成績表
SET 総合評価 = 'B'
WHERE （政治>=80 OR 倫理　>= 80)
AND (国語>=80 OR 英語　>=80)
AND 総合評価　IS NULL
```

```
　UPDATE 成績表
SET 総合評価 = 'D'
WHERE 数学<50　AND 国語<50　AND 以下省略
AND 総合評価　IS NULL
```

```
　UPDATE 成績表
SET 総合評価 = 'C'
WHERE 総合評価　IS NULL
```

⑤いずれかの科目が０点の生徒を削除する

```
DELETE FROM 成績表
WHERE 国語　= 0
OR 数学　　　=0
OR 倫理　=0
以下省略
```

</div></details>

<h2>終わり</h2>