我正在尝试获取满足多个要求的项目的总数量。在这个表中,销售的每个产品都有一个不同的ID。但是,每个产品都可以与多个属性配对(我们将这些属性称为颜色)。例如:具有ID# 1234的产品可以具有蓝色和橙色属性,这两个属性都列在属性列下(在指向产品ID#的多行对一链接中)。
我要做的是计算具有某些属性组合的产品的数量。例如,有多少产品有橙色和蓝色,而不仅仅是橙色或蓝色。更复杂的是,我不能提取产品ID的总数,我必须对它们进行计数。可以说,我拉动了一段时间,在这段时间里,有数以亿计的产品售出,所有产品都具有不同的属性组合。更复杂的是,每种颜色都有多个代码。例如,蓝色可以被编码为01或950。
有没有办法制作一条SQL语句,让我计算满足特定属性组合的产品数量?例如,拉卷为:橙色和蓝色、蓝色和绿色、绿色和黄色等。
我束手无策,需要一些指导!
提前谢谢你
发布于 2014-04-30 04:42:27
select count(*) from table where Attribute in (01,950) and Attribute in (02, 951)发布于 2014-04-30 04:45:08
您可以使用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子句对于您可能希望在每个产品中的属性上使用的所有类型的条件都非常灵活。
https://stackoverflow.com/questions/23374816
复制相似问题