我有一张桌子T,有2个属性clientid和productid。每行代表一次卖出。
我必须找到我的数据库中所有客户购买的产品数量。
我是SQL的新手,我找不到一种简单的方法。
示例:
clientid | productid
--------------------
1 | A
1 | B
1 | C
1 | D
2 | A
2 | C
2 | E
3 | A
3 | B
预期结果:
Count: 1
因为客户1,2和3只购买了产品A
由于
答案 0 :(得分:2)
一种方法:
select productid
from sales
group by productid
having count(*) = (select count(distinct clientid)
from sales);
以上将返回所有客户购买的所有产品。如果只需要计数,请将其包装到派生表中:
select count(*)
from (
select productid
from sales
group by productid
having count(*) = (select count(distinct clientid)
from sales)
) t;
以上仅返回已订购至少一种产品的所有客户购买的产品。如果您有一个client
表,其中**存储了所有*客户,则应将子查询替换为select count(*) from clients