簡體   English   中英

SQL 如何從一個列表中連接相同的值然后求和

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

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