使用大型零售交易表,我試圖查看他們購買特定產品類別的客戶購買情況。
下面的表格示例,客戶 1 和 3 購買了柑橘類商品,因此我想從該交易中獲取所有商品,而不僅僅是柑橘類商品。然后,我會將客戶購買的商品組合在一起。
| 交易 | 產品 | 類別 |
|---|---|---|
| 客戶 1 | 魚 | 蛋白質 |
| 客戶 1 | 起司 | 乳制品 |
| 客戶 1 | 橘子 | 柑橘 |
| 客戶 1 | 啤酒 | 酒精 |
| 客戶 2 | 蛋 | 蛋白質 |
| 客戶 2 | 啤酒 | 酒精 |
| 客戶 3 | 起司 | 乳制品 |
| 客戶 3 | 魚 | 蛋白質 |
| 客戶 3 | 檸檬 | 柑橘 |
已使用 WHERE EXISTS 但這并沒有回傳正確的產品。
SELECT
Transaction,
Product,
Category
WHERE EXISTS
(SELECT *
FROM table
WHERE Category = 'Citrus')
期望的輸出
| 交易 | 購買的產品 |
|---|---|
| 客戶 1 | 4 |
| 客戶 3 | 3 |
uj5u.com熱心網友回復:
您可以使用以下查詢實作所需的輸出
SELECT
Transaction,
COUNT(Product) AS Products_Bought
FROM TABLE
WHERE Transaction IN (SELECT Transaction
FROM TABLE
WHERE Category = 'Citrus')
GROUP BY Transaction;
uj5u.com熱心網友回復:
可能有很多可能性會收到您想要的結果。您可以先創建一個子選擇以查找匹配的行(即那些將“柑橘”作為類別的行),然后在此計數后對它們進行分組:
SELECT transaction, COUNT(*) AS ProductsBought
FROM table
WHERE transaction IN
(SELECT transaction FROM table WHERE category = 'Citrus')
GROUP BY transaction
ORDER BY transaction;
你可以在這里看到一個作業示例:db<>fiddle
只是對鏈接示例的注釋:我重命名了表和列,因為否則您無法在那里執行查詢。我認為這在您的資料庫中不是問題,但如果是這樣,您可以在可能的情況下重命名該列或在查詢中對其進行轉義。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/467741.html
標籤:sql
上一篇:查找來自不同表的記錄對應的id值
下一篇:基于另一個表的SQL查詢
