欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

MySQL case sum

榮姿康1年前12瀏覽0評論

在MySQL中,CASE語句可以根據條件進行分支判斷,往往是配合其他函數一起使用的。其中,SUM函數用于計算一列數值型數據的總和。

假設我們有如下數據表orders

CREATE TABLE orders (
id INT PRIMARY KEY,
customer_id INT,
amount INT,
status VARCHAR(10)
);
INSERT INTO orders VALUES
(1, 1, 100, 'shipped'),
(2, 1, 200, 'shipped'),
(3, 2, 150, 'cancelled'),
(4, 3, 50, 'shipped'),
(5, 3, 300, 'completed'),
(6, 4, 250, 'completed');

現在我們想要統計每個客戶不同訂單狀態下的總金額。我們可以使用以下語句:

SELECT customer_id, 
SUM(CASE WHEN status = 'shipped' THEN amount ELSE 0 END) AS shipped_amount,
SUM(CASE WHEN status = 'cancelled' THEN amount ELSE 0 END) AS cancelled_amount,
SUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END) AS completed_amount
FROM orders
GROUP BY customer_id;

以上語句使用了CASE語句,當訂單狀態為不同的值時,條件成立,返回對應的訂單總金額;否則返回0。同時使用了SUM函數,將每個客戶不同訂單狀態下的總金額相加,并按照客戶ID進行分組。

執行以上語句,得到以下結果:

+-------------+----------------+------------------+-------------------+
| customer_id | shipped_amount | cancelled_amount | completed_amount |
+-------------+----------------+------------------+-------------------+
|           1 |            300 |                0 |                 0 |
|           2 |              0 |              150 |                 0 |
|           3 |             50 |                0 |               300 |
|           4 |              0 |                0 |               250 |
+-------------+----------------+------------------+-------------------+

可以看到,以上語句成功統計了每個客戶不同訂單狀態下的總金額。