[英]How to select a row according to sum of values from another column?
我有一個稱為stock
的表,其設計如下:
| ID | product_id | qty |
|----|------------|-----|
| 1| 1 | 4 |
| 2| 1 | 3 |
| 3| 2 | 10 |
| 4| 2 | 15 |
| 5| 3 | 2 |
我要從此表中選擇總數量少於10的product_id
。根據此表,必須選擇(product_id)
到目前為止,這是我嘗試過的:
SELECT product_id
FROM stock
WHERE 10>(SELECT SUM(quantity) FROM stock)
請幫我弄清楚為什么這行不通。
這將不起作用,因為如果使用聚合函數,則必須將其放入HAVING子句中。 您還希望按product_id分組,以便SUM()函數知道要累加的分組。
嘗試這個:
SELECT product_id
FROM stock
GROUP BY product_id
HAVING SUM(quantity) < 10;
這是適合您的SQL Fiddle示例。
SELECT product_id, SUM(qty) tot_stock
FROM stock
GROUP BY 1
HAVING tot_stock < 10
這也將為您提供總庫存,如果不需要,可以將其丟棄。
但是,如果你想只產品ID發送給客戶端,包裹上面的查詢到另一個選擇是這樣的:
SELECT product_id FROM (SELECT product_id, SUM(qty) tot_stock
FROM stock
GROUP BY 1
HAVING tot_stock < 10) a
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.