我試圖僅在總價大于 0 時才顯示結果。
這是我的資料庫表:
-----------------------------------------------------------
| id | name | phone | price | status |
-----------------------------------------------------------
| 1 | John | 0701111111 | 300 | 1 |
-----------------------------------------------------------
| 2 | Lucy | 0702222222 | 500 | 1 |
---------------------------------------------------------
| 3 | Adam | 0703333333 | 700 | 0 |
-----------------------------------------------------------
| 4 | Lucy | 0702222222 | -500 | -1 |
-----------------------------------------------------------
| 5 | John | 0701111111 | 450 | 1 |
-----------------------------------------------------------
| 6 | Mike | 0704444444 | 150 | 1 |
-----------------------------------------------------------
我試圖通過不同的電話和狀態僅顯示每個付款人的總價(1 = 已付款,-1 = 退款,0 = 未付款)
這是我的 SQL 代碼:
SELECT
DISTINCT(presents_test.phone) AS uniquePhone,
(SELECT MIN(name) FROM presents_test WHERE phone = uniquePhone AND status != 0) AS name,
(SELECT SUM(price) FROM presents_test WHERE phone = uniquePhone AND status != 0) AS totalPrice
FROM presents_test
WHERE status != 0
結果是:
-----------------------------------
| uniquePhone | name | totalPrice |
-----------------------------------
| 0701111111 | John | 750 |
-----------------------------------
| 0702222222 | Lucy | 0 |
-----------------------------------
| 0704444444 | Mike | 150 |
-----------------------------------
我只需要忽略 Lucy 行,因為它是 0 價格。
我試圖添加AND totalPrice > 0到 WHERE 子句,但它收到未知列的錯誤。
我能做些什么來解決這個問題?
uj5u.com熱心網友回復:
您可以按電話號碼分組。當您分組時,聚合函式如SUM適用于每個組。并且HAVING是WHERE分組資料的條款
SELECT phone AS uniquePhone,
MIN(name) AS name,
SUM(price) AS totalPrice
FROM presents_test
WHERE status <> 0
GROUP BY phone
HAVING SUM(price) > 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/331613.html
標籤:sql
下一篇:將表映射到集合
