我试图获得满足多种要求的物品总量。在此表中,每个销售的产品都有一个不同的ID。但是,每个产品都可以与多个属性配对(我们称之为这些颜色)。例如:ID为#1234的产品可以具有蓝色和橙色属性,这两个属性都列在属性列下(在产品ID#的多个行到一个链接中)。
我要做的是计算具有某些属性组合的产品数量。例如,有多少产品有橙色和蓝色,而不仅仅是橙色或蓝色。为了使这更复杂,我无法提取产品ID的总数,我将不得不计算它们。我只想说,我正在推动销售数亿件产品的时间段,所有产品都有不同的属性组合。为了使事情进一步复杂化,每种颜色有多个代码。例如,蓝色可以编码为01或950.
有没有办法可以制作一个SQL语句,让我可以计算满足特定属性组合的产品数量?如,拉动音量: 橙色和蓝色 蓝色和绿色 绿色和黄色 等?
我在我的智慧结束,需要一些指导!
提前谢谢
答案 0 :(得分:0)
select count(*) from table where Attribute in (01,950) and Attribute in (02, 951)
答案 1 :(得分:0)
您可以使用group by
和having
:
select ProductId
from ProductAttributes pa
group by ProductId
having sum(case when Attribute in ('01', '950') then 1 else 0 end) > 0 and
sum(case when Attribute in ('02', '951') then 1 else 0 end) > 0;
如果需要属性数,请将其放在子查询中:
select count(*)
from (select ProductId
from ProductAttributes pa
group by ProductId
having sum(case when Attribute in ('01', '950') then 1 else 0 end) > 0 and
sum(case when Attribute in ('02', '951') then 1 else 0 end) > 0
) t;
还有其他方法,但having
子句对于您可能想要的每种产品属性的所有类型条件都非常灵活。