对于一个大学项目,我必须根据一张表的数据来计算kpi。该表存储有关超级市场的篮子,购物的行项目及其产品类别的数据。我必须计算在特定商店中购买的商品的所有商品类别的数量。所以在表中看起来像这样:
StoreId BasketID CategoryId
1 1 1
1 1 2
1 1 3
1 2 1
1 2 3
1 2 4
2 3 1
2 3 2
2 3 3
2 4 1
作为查询的结果,我想要一个表,该表对与商店相关联的所有购物篮中的不同商品类别进行计数。像这样的东西:
StoreId Count(CategoryId)
1 4
2 3
如果我对硬值进行非动态声明,则它可以正常工作。
select basket_hash, store_id, count(DISTINCT retailer_category_id)
from promo.checkout_item
where store_id = 2
and basket_hash = 123
GROUP BY basket_hash, store_id;
但是,当我尝试以动态方式编写它时,sql将计算每个购物篮的金额并将单个金额加在一起。
select store_id, Count(DISTINCT retailer_category_id)
from promo.checkout_item
group by store_id;
但是像这样,它并没有在与商店相关的所有购物篮中比较类别,我得到了重复,因为类别可以在购物篮1和购物篮2中。
有人可以帮忙吗?
谢谢!
作为您的预期结果,您是否需要以下声明?
SELECT StoreId, COUNT(*)
FROM (
SELECT DISTINCT StoreId, CategoryId
FROM table_name
)
GROUP BY StoreId;
请用您的表名替换语句中的“ table_name”。
我不确定“动态方式”是什么意思。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句