请教,现在有用户和购买不同商品的记录数据(实际商品种类上百种,用户数量数十万)。现在需要统计:
商品一 商品二 同时购买两种商品的用户数
商品一 商品三 同时购买两种商品的用户数
商品二 商品三 同时购买两种商品的用户数
排组合统计,按同时购买数量,从大到小排列。
请问,在SQL中可以直接统计吗?语句如何实现?如果SQL中实现不了,有其他比较容易实现的方法吗?
SQL中可以统计,但是如果把你的所有的条件都放进去以后效率会很低,可以数据库查询和后端处理结合起来,数据库查出基础的统计数据,然后后端再循环计算。
如果要一次性统计出数据有点费劲,可以设定好条件,一次计算一种条件之类的。
select a.用户 from table a left join table b on a.用户=b.用户 and a.商品='1' and b.商品='2'
这就是同时购买商品1和2的用户,你外层再加个查询,写个count就能出数量,或者你直接在查询器里看有多少行也行
至于2,3,1,3的组合,自己改改
select count(distinct prdoudctid) as cnt,user from table group by user having cnt > 1;