首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

MySQL 單表查詢:按 id 和 name 分組求 pass 之和

     編輯:程式設計疑難解答

需求:從表中選出 id 和 name 都相同的行,將 pass 列求和。

SQL 語句

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) 再求和。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved