需求:從表中選出 id 和 name 都相同的行,將 pass 列求和。
SELECT id, name, SUM(pass) AS total_pass
FROM tb_test
GROUP BY id, name;
GROUP BY id, name:以 id 和 name 組合為分組鍵,相同組合的行聚合為一行。SUM(pass):對每組內的 pass 值求和。id、name、total_pass。id | name | pass
---|------|-----
1 | A | 10
1 | A | 20
1 | B | 5
2 | A | 15
id | name | total_pass
---|------|-----------
1 | A | 30
1 | B | 5
2 | A | 15
若需只顯示總和大於某值的組,用 HAVING:
SELECT id, name, SUM(pass) AS total_pass
FROM tb_test
GROUP BY id, name
HAVING SUM(pass) > 10;
GROUP BY 列必須出現在 SELECT 列表中(或聚合函數中),否則某些 SQL 模式(如 ONLY_FULL_GROUP_BY)會報錯。pass 為字符串類型,需先 CAST(pass AS UNSIGNED) 再求和。