集計に失敗。
「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も加えて解決☆