簡體   English   中英

如何根據另一列的值總和選擇一行?

[英]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)

  • 1
  • 3

到目前為止,這是我嘗試過的:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM