書籍「達人に学ぶSQL徹底指南書」を学習していて不明な点があるので教えてください。
リンク内容
①```ORACLE
SELECT SUM(popularity),
CASE pre_name
WHEN '徳島県' THEN '四国'
WHEN '香川県' THEN '四国'
WHEN '愛媛県' THEN '四国'
WHEN '高知県' THEN '四国'
WHEN '福岡県' THEN '九州'
WHEN '佐賀県' THEN '九州'
WHEN '長崎県' THEN '九州'
WHEN '熊本県' THEN '九州'
WHEN '大分県' THEN '九州'
ELSE 'その他' END
FROM Table_A
GROUP BY CASE pre_name
WHEN '徳島県' THEN '四国'
WHEN '香川県' THEN '四国'
WHEN '愛媛県' THEN '四国'
WHEN '高知県' THEN '四国'
WHEN '福岡県' THEN '九州'
WHEN '佐賀県' THEN '九州'
WHEN '長崎県' THEN '九州'
WHEN '熊本県' THEN '九州'
WHEN '大分県' THEN '九州'
ELSE 'その他' END;
上記のSQLがどうして成立するかが理解できていません。 釈然としない点は 1.『GROUP BY 列名』 ではなく 『GROPU BY 定数』 の形になっているように思われる 2.GROUP BY CASE・・・以下の文で、まるでCASE文で変換を行ったビューを作った上で、そのビューに対してGROUP BYによる集計かけているように感じてしまうが、その考えの根拠も正しさもわからない。 ②```ORACLE SELECT SUM(popularity), CASE pre_name WHEN '徳島県' THEN '四国' WHEN '香川県' THEN '四国' WHEN '愛媛県' THEN '四国' WHEN '高知県' THEN '四国' WHEN '福岡県' THEN '九州' WHEN '佐賀県' THEN '九州' WHEN '長崎県' THEN '九州' WHEN '熊本県' THEN '九州' WHEN '大分県' THEN '九州' ELSE 'その他' END AS district FROM Table_A GROUP BY district;
実現しようとしていることが②のようなことであることは理解し、かつ実効順序の関係でオラクルでは②が正しく動かないこともわかるのですが、なぜ①の書き方で②が実現できるかわかりません。
どうかご教授ください。よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/10/30 22:26