MySQLで、GROUP BY 後、SUMする挙動が理解できないのですが、
カラム
name,level(int),hoge(int)
SQL1
SELECT name,
SUM( CASE WHEN level = '1' THEN
hoge ELSE 0 END),
SUM( CASE WHEN level = '2' THEN
hoge ELSE 0 END)
FROM `テーブル名`
GROUP BY name;
SQL2
・意味が分からないので、SUMを外してみました
・3番目のカラムhogeが全て0になりました
SELECT name,
( CASE WHEN level = '1' THEN
hoge ELSE 0 END),
( CASE WHEN level = '2' THEN
hoge ELSE 0 END)
FROM `テーブル名`
GROUP BY name;
SQL3
・SUMを一つだけ追記
・最初と同じ結果になりました
SELECT name,
( CASE WHEN level = '1' THEN
hoge ELSE 0 END),
SUM( CASE WHEN level = '2' THEN
hoge ELSE 0 END)
FROM `テーブル名`
GROUP BY name;
質問
・SQL2で、どうして3番目のカラムhogeが全て0になるのでしょうか? 実行されていない?
・SQL1とSQL3は同じ意味?
・そもそもどういう順番で実行されるのでしょうか?
・最初に実行されるのは、SELECT name FROM テーブル名 GROUP BY name;
?
・次に実行されるのは、SELECT SUM( CASE WHEN level = '1' THEN hoge ELSE 0 END) FROM テーブル名 GROUP BY name;
?