假设我有一个带有购买表的杂货店应用程序:
customerId int
itemId int
Run Code Online (Sandbox Code Playgroud)
四位顾客进入商店:
Bob buys a banana, lemonade, and a cookie
Kevin buys a banana, lemonade, and a donut
Sam buys a banana, orange juice, and a cupcake
Susie buys a banana
Run Code Online (Sandbox Code Playgroud)
我正在尝试编写一个查询,它将返回哪些项目组合最受欢迎.在这种情况下,此查询的结果应为:
banana and lemonade-2
Run Code Online (Sandbox Code Playgroud)
我已经写了一个查询,告诉我一个多项目购买的所有项目的列表(我们不包括一个项目的销售 - 它不能形成"组合").它返回:
banana - 3
lemonade - 2
cookie - 1
donut - 1
cupcake - 1
orange juice - 1
Run Code Online (Sandbox Code Playgroud)
这是查询:
SELECT itemId, count( * )
FROM grocery_store
INNER JOIN (
SELECT customerId
FROM grocery_store
GROUP BY customerId
HAVING count( itemId ) > 1
)subQuery ON subQuery.customerId = grocery_store.customerId
GROUP BY itemId;
Run Code Online (Sandbox Code Playgroud)
我可以获得一个关于如何扩展现有查询以获得所需输出的指针吗?
select a.itemID, b.itemID, COUNT(*) countForCombination
from grocery_store a
inner join grocery_store b
on a.customer_id = b.customer_id
and a.itemID < b.itemID
group by a.itemID, b.itemID
order by countForCombination desc
Run Code Online (Sandbox Code Playgroud)
假定:
grocery_store =销售记录
customer_id =独特销售