集計に失敗。

「max」「group by」を用いたSQLを実行した時のこと。

m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 10,  JPN,  ABC,  10,  0,  0,  0,  0
 10,  JPN,  ABC,  0,  20,  0,  0,  0
 10,  JPN,  ABC,  0,  0,  40,  0,  0
 10,  JPN,  ABC,  0,  0,  0,  80,  0
 10,  USA,  ABC,  10,  0,  0,  0,  0
 10,  USA,  ABC,  0,  20,  0,  0,  0
 10,  USA,  ABC,  0,  0,  40,  0,  0
 10,  USA,  ABC,  0,  0,  0,  80,  0

という8種類のレコードを集計して、

m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 10,  JPN,  ABC,  10,  20,  40,  80,  0
 10,  USA,  ABC,  10,  20,  40,  80,  0

という2種類のレコードを得たいのに、

m1 | m2 | m3 | m4 | m5 | m6 | m7 | m8 |
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 10,  JPN,  ABC,  10,  20,  40,  80,  0

…のように、結果が1つだけになっていました(´・ω・`)


実行したSQLは、

SELECT
m1,
m2,
m3,
round(max(m4), 2),
round(max(m5), 2),
round(max(m6), 2),
round(max(m7), 2)
FROM テーブル
GROUP BY m3

…だったのですが、「m2」まで一まとめにされてしまったんですね…(´・ω・`)

SELECT
m1,
m2,
m3,
round(max(m4), 2),
round(max(m5), 2),
round(max(m6), 2),
round(max(m7), 2)
FROM テーブル
GROUP BY m2,m3

…のように、GROUP BYにm2も加えて解決☆