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

SQL 入門:按公司分組求總金額的標準寫法

     編輯:程式設計綜合問答

需求:根據表中數據,按「客戶名稱」(公司)分組,計算每組的「金額」總和。這是 SQL 聚合查詢最基礎也最常見的場景。

表結構假設

CREATE TABLE orders (
    id INT PRIMARY KEY,
    client_name VARCHAR(100),  -- 客戶名稱/公司
    amount DECIMAL(10,2)       -- 金額
);

標準 SQL 寫法

SELECT client_name, SUM(amount) AS total_amount
FROM orders
GROUP BY client_name;

關鍵點解析

  • GROUP BY client_name:將相同 client_name 的行聚合為一組。
  • SUM(amount):對每組內的 amount 求和。
  • AS total_amount:為結果列起別名,便於應用層讀取。

進階:多字段分組與篩選

-- 按公司和年份分組
SELECT client_name, YEAR(order_date) AS yr, SUM(amount) AS total
FROM orders
GROUP BY client_name, YEAR(order_date);

-- 只顯示總額大於 10000 的公司
SELECT client_name, SUM(amount) AS total
FROM orders
GROUP BY client_name
HAVING SUM(amount) > 10000;

常見錯誤

  • SELECT 列未出現在 GROUP BY 中:如 SELECT id, client_name, SUM(amount) ... GROUP BY client_name,id 無法確定值,會報錯(MySQL ONLY_FULL_GROUP_BY 模式)或返回任意值。
  • 用 WHERE 替代 HAVING 篩選聚合結果:WHERE SUM(amount) > 10000 錯誤,聚合後篩選必須用 HAVING。

性能提示

  • 在 client_name 上建立索引可加速分組。
  • 大數據量時考慮分區表或物化視圖預聚合。

掌握 GROUP BY + 聚合函數 模式,即可解決 80% 以上的統計報表類 SQL 需求。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved