グループ化されたデータから条件にあったグループを抽出
GROUP BY句を使用した場合はWHERE句とHAVING句の2か所で抽出条件を指定することができます。この違いは、WHERE句はグループ化前のレコードに対して、抽出条件を指定します。それに対して、HAVING句はグループ化後のグループ化されたレコードに対して抽出条件を設定します。
<例題>
売上明細と商品表から売上Noごとの売上金額合計を求め、売上金額が3000以上の行を抽出する。売上金額は単価*数量で計算する。
| 商品CD | 商品名 | 単価 |
|---|---|---|
| 10 | 鉛筆 | 30 |
| 20 | 消しゴム | 50 |
| 30 | シャープペン | 250 |
| 40 | ボールペン | 150 |
| 50 | 色鉛筆 | 700 |
| 60 | ノート | 100 |
| 売上No | 日付 | 顧客CD |
|---|---|---|
| 1 | 2001/05/27 | 105 |
| 2 | 2001/05/27 | 101 |
| 3 | 2001/05/27 | 103 |
| 4 | 2001/06/27 | 102 |
| 5 | 2001/06/27 | 104 |
| 売上No | 連番 | 商品CD | 数量 |
|---|---|---|---|
| 1 | 1 | 10 | 10 |
| 1 | 2 | 30 | 7 |
| 1 | 3 | 60 | 25 |
| 2 | 1 | 20 | 15 |
| 2 | 2 | 40 | 3 |
| 3 | 1 | 30 | 8 |
| 3 | 2 | 40 | 30 |
| 3 | 3 | 50 | 12 |
| 3 | 4 | 60 | 50 |
| 4 | 1 | 20 | 21 |
| 4 | 2 | 40 | 21 |
| 5 | 1 | 10 | 17 |
| 5 | 2 | 20 | 5 |
| 顧客CD | 顧客名 |
|---|---|
| 101 | 二島商店 |
| 102 | 姫路商事 |
| 103 | 大阪物産 |
| 104 | 神戸商店 |
| 105 | 福岡商事 |
SELECT 売上No,SUM(単価*数量) ← 売上Noと売上金額合計を表示
FROM 商品表, 売上明細
WHERE 商品表.商品CD=売上明細.商品CD ← 商品表の商品CDと売上明細の商品CDが一致する行を結合
GROUP BY 売上No ← 売上Noでグループ化をおこなう
HAVING SUM(単価*数量) >=3000 ← 売上金額が3000以上の行を抽出する
| 売上No | |
|---|---|
| 1 | 4550 |
| 3 | 19900 |
| 4 | 3600 |
例題のSQL文の実行順序は次のとおりです
<例題>
売上明細と商品表から売上Noごとの売上金額合計を求め、売上金額が3000以上の行を抽出する。売上金額は単価*数量で計算する。売上金額の降順で表示する。
SELECT 売上No,SUM(単価*数量) ← 売上Noと売上金額合計を表示
FROM 商品表, 売上明細
WHERE 商品表.商品CD=売上明細.商品CD ← 商品表の商品CDと売上明細の商品CDが一致する行を結合
GROUP BY 売上No ← 売上Noでグループ化をおこなう
HAVING SUM(単価*数量) >=3000 ← 売上金額が3000以上のレコードを抽出する
ORDER BY SUM(単価*数量) DESC ← 売上金額の降順にソートする
| 売上No | |
|---|---|
| 3 | 19900 |
| 1 | 4550 |
| 4 | 3600 |
戒名は死者に贈られる名前のように考えられがちですが、本来は戒律を守り仏弟子となった証としてつけるものなのです。戒名の成り立ちと宗派による違いについて説明します。
亥(い)年生まれの守護仏は、阿弥陀菩薩です。
初詣に関する質問に回答する初詣FAQ(質問と回答)です。
宮城県仙台成田山で水子供養をする際に読経している般若心経の解説です。