[英]Get sum of min values in each group from Mysql
我正在嘗試檢索某些型號的最低價格。 每個模型都屬於某個產品組。
我有以下表格:
產品
model_id product_id price
1 1 100
2 1 120
3 1 100
4 1 200
5 1 250
10 1 20
11 1 50
12 1 50
產品總覽
model_id product_id group_id
1 1 A
2 1 A
3 1 A
4 1 A
5 1 A
10 1 B
11 1 B
12 1 B
產品組可選
group_id product_id
B 1
某些組可能是可選的,這意味着除非會員另有選擇,否則價格將為零。
因此,在上面的示例中,我想從每個組中獲取最低價格的總和。 我們有A組和B組兩個組。A組的最低價格為100(model_id 1和3),B組的最低價格為20(model_id 10),但是由於B組是可選的,因此最低價格為0。
最小值的總和:100(A組)+ 0(B組)= 100
到目前為止,我的代碼:
SELECT po.group_id,
CASE WHEN
((SELECT COUNT(*) FROM product_group_optional pgo
WHERE po.group_id = group_id AND po.product_id = 1 AND po.product_id = product_id) >= 1)
THEN SUM(0)
ELSE SUM(p.price)
END AS sum_price
FROM product_overview po, product p
WHERE po.product_id = 1
AND po.model_id = p.model_id
AND p.price = (
SELECT MIN(p2.price)
FROM product p2, product_overview po2
WHERE po2.product_id = 1 AND po2.group_id = po.group_id
AND po2.model_id = p2.model_id
)
GROUP BY po.group_id
輸出:
group_id sum_price
A 200
B 0
問題是,對於A組,我得到200,但應該為100。有2個模型的最小值為100,分別為模型1和3。我假設它們的總和為100 + 100 = 200。
問題a)但是,無論此值存在多少次,我都想取最小值。
問題b)另外,我正在嘗試獲取A組和B組這兩個輸出SUM的總和。
但是我不確定該怎么做。 我希望在此查詢中完成。
所需的輸出
Sum of all groups
100
有人可以引導我朝正確的方向嗎?
您可以使用以下查詢:
SELECT SUM(min_price)
FROM (
SELECT po.group_id,
MIN(CASE WHEN pgo.group_id IS NULL THEN price ELSE 0 END) AS min_price
FROM Product AS p
INNER JOIN Product_overview AS po
ON p.product_id = po.product_id AND p.model_id = po.model_id
LEFT JOIN Product_group_optional AS pgo ON po.group_id = pgo.group_id
GROUP BY po.group_id) AS t
我不確定我是否了解您的表的鍵以及問題。
有幾個問題。
a)答案應該是120?
b)如果產品沒有價格,價格是否為空?
c)如果某個組中有一個產品的價格為空,而其他產品的價格為零,是否應將其計為0?
以下是在一段時間內忽略product_group_optional的情況下,如何獲得每個組的較低價格的總和:
SELECT t2.group_id, sum(t2.new_price) FROM ( SELECT t.group_id, t.new_price FROM ( SELECT po.group_id, if(ifnull(pgo.product_id, true), p.price, 0) as new_price FROM product p, product_overview po LEFT JOIN product_group_optional pgo ON po.group_id = pgo.group_id WHERE p.model_id = po.model_id ORDER by po.group_id, new_price ) t GROUP BY t.group_id ) t2
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.