簡體   English   中英

如何根據同一個表上另一個查詢的結果集執行查詢?

[英]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 BYitem_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;
 
  

SQL小提琴演示

更新:試試這個:

 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'; 

更新了SQL小提琴演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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