[英]SQL how to join same value from one column table and then sum it
這里的問題是我有一個接受這些輸入的程序
[
{
customer: 'Alexandra'
productCode: 'SH20'
},
{
customer: 'Alex'
productCode: 'SH20'
},
{
customer: 'Alexis'
productCode: 'SH21'
}
]
每個產品代碼都有自己的價格,表產品是這樣的
{
id: 1,
productCode: 'SH20',
name: 'Tires',
price: 100
}
我想根據輸入總結產品的總價格,但是使用WHERE IN ("SH20", "SH20", "SH21")
只會顯示 "SH20" 中的 1 行,如果我將它總結為產品總價我錯了。
你如何 select 所有行,包括使用 SQL 的重復項並求和? 這種問題只能用SQL解決嗎?
編輯:
嘗試查詢,以免假設產品SH21
的價格為 200,而SH20
的價格為 100。此查詢的總價格是 300,應該是 400,因為有 2 個“SH20”。
SELECT sum(price) FROM product WHERE productCode in ('SH20', 'SH20', 'SH21')
將產品表與您的輸入數據連接起來,以獲得產品 SH20 兩次。
SELECT SUM(product.price) AS total
FROM product
JOIN
(
SELECT 'SH20' AS productcode
UNION ALL
SELECT 'SH20' AS productcode
UNION ALL
SELECT 'SH21' AS productcode
) requested ON requested.productcode = product.productcode;
感謝您接受這一點:-) 這與VALUES
子句的替代方法相同:
SELECT SUM(product.price) AS total
FROM product
JOIN (VALUES ('SH20'), ('SH20'), ('SH21')) AS requested(productcode)
ON requested.productcode = product.productcode;
如果我理解正確,聽起來您需要使用 GROUP BY。
SELECT sum(price) FROM product WHERE productCode in ("SH20", "SH20", "SH21") GROUP BY productCode
如果這是您正在尋找的行為,我鼓勵您閱讀 group by 的手冊頁並熟悉它 - 這是一種您會經常使用且非常值得學習的模式。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.