[英]How to perform a query based on the result set of another query on the same table?
可以對多個項目進行請求,唯一的密鑰是代理請求_id
我有以下查詢返回9位電話號碼的結果集
SELECT phone_number FROM purchases
WHERE item_type = 'popcorn'
GROUP BY phone_number;
我想,然后檢索每個列表DISTINCT
item_type
每個那些要求phone_number
這不是“爆米花”,然后GROUP BY
該item_type
。 IE我想知道客戶傾向於購買哪些類似的產品。
期望的結果集可能看起來像這樣
item COUNT(*)
pretzels 200
chips 150
crackers 125
… …
在這種情況下,購買爆米花和椒鹽脆餅的phone_number
的數量是200(我對這個值感興趣)。 購買爆米花的人購買椒鹽卷餅的總數是1,000,但這不是我感興趣的價值。
如何創建僅指定item_type
並檢索上述結果的單個查詢,該結果顯示客戶也購買的項目?
此外 - 如果有人可以幫助我做一個更有描述的標題,將不勝感激。
編輯
這是表格
CREATE TABLE purchases(
request_id BIGINT NOT NULL auto_increment,
phone_number INT(9) NOT NULL,
item_type VARCHAR(256) NOT NULL,
PRIMARY KEY(request_id)
);
編輯
根據此數據http://www.sqlfiddle.com/#!2/23236/2請求所需的輸出
item COUNT(*)
cc 1
notpopcorn 1
然后,我想檢索每個不是'爆米花'的phone_number所請求的每個DISTINCT item_type的列表,然后是GROUP_那個item_type。IE我想知道客戶傾向於購買哪些類似的產品。
試試這個:
SELECT item_type as item, COUNT(*) FROM purchases WHERE phone_number NOT IN (SELECT DISTINCT phone_number FROM purchases WHERE item_type = 'popcorn') GROUP BY item_type;
更新:試試這個:
SELECT item_type as item, COUNT(*) FROM purchases GROUP BY item_type, phone_number HAVING phone_number IN (SELECT DISTINCT phone_number FROM purchases WHERE item_type = 'popcorn') AND item_type <> 'popcorn';
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.