可以为多个项目提出请求,唯一的关键是代理请求_id
我有以下查询,它返回9位数电话号码的结果集
SELECT phone_number FROM purchases
WHERE item_type = 'popcorn'
GROUP BY phone_number;
然后,我想检索每个DISTINCT
item_type
请求的每个phone_number
GROUP BY
的列表,其中item_type
不是'爆米花'然后是item COUNT(*)
pretzels 200
chips 150
crackers 125
… …
phone_number
item_type
1}}。 IE我想了解客户倾向于购买的类似产品。
所需的结果集可能看起来像这样
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)
);
在这种情况下,购买爆米花和椒盐卷饼的item COUNT(*)
cc 1
notpopcorn 1
的数量是200(我对此值感兴趣)。购买爆米花的人购买椒盐脆饼的总数是1,000,但这不是我感兴趣的价值。
如何创建仅指定{{1}}的单个查询并检索上述结果,该结果显示客户也购买的商品?
另外 - 如果有人可以帮我制作一个更有描述性的标题,那将是值得赞赏的。
修改
这是表格
{{1}}
修改
根据此数据http://www.sqlfiddle.com/#!2/23236/2
请求所需的输出{{1}}
答案 0 :(得分:2)
<击> 撞击>
<击>然后我想检索每个DISTINCT item_type的列表 每个那些不是'爆米花'的phone_number请求 然后GROUP BY那个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';