Select

SQLite基於數組返回重複行的總和

  • May 9, 2019

如果我有一個fruits如下所示的簡單表:

+---+---------+------+
|   | name    | lbs  |
+---+---------+------+
| 1 | apple   | 0.25 |
| 2 | melon   | 3.00 |
+---+---------+------+

在查詢中,我需要返回lbs基於數組的總和。例如,我可以讓數組('melon', 'melon', 'apple')返回值6.25

像這樣的查詢不起作用:

SELECT SUM(lbs) FROM fruits WHERE name IN ('melon', 'melon', 'apple');

它返回3.25是因為即使melon列出了兩次,它也只計算一次。

如何讓select語句按照給定數組的要求對重複行求和?我對 StackExchange 進行了很多搜尋,但也許我沒有使用正確的關鍵字來找到答案。提前感謝您的幫助/耐心。

使用所需名稱創建一個(虛擬)表,然後將其與實際表連接:

WITH my_array(name) AS (
 VALUES ('melon'), ('melon'), ('apple')
)
SELECT SUM(lbs)
FROM fruits
JOIN my_array USING (name);

引用自:https://dba.stackexchange.com/questions/237703