SQL代码:计算满足多个要求的项目数

时间:2014-04-29 20:39:05

标签: sql database select teradata

我试图获得满足多种要求的物品总量。在此表中,每个销售的产品都有一个不同的ID。但是,每个产品都可以与多个属性配对(我们称之为这些颜色)。例如:ID为#1234的产品可以具有蓝色和橙色属性,这两个属性都列在属性列下(在产品ID#的多个行到一个链接中)。

我要做的是计算具有某些属性组合的产品数量。例如,有多少产品有橙色和蓝色,而不仅仅是橙色或蓝色。为了使这更复杂,我无法提取产品ID的总数,我将不得不计算它们。我只想说,我正在推动销售数亿件产品的时间段,所有产品都有不同的属性组合。为了使事情进一步复杂化,每种颜色有多个代码。例如,蓝色可以编码为01或950.

有没有办法可以制作一个SQL语句,让我可以计算满足特定属性组合的产品数量?如,拉动音量: 橙色和蓝色 蓝色和绿色 绿色和黄色 等?

我在我的智慧结束,需要一些指导!

提前谢谢

2 个答案:

答案 0 :(得分:0)

select count(*) from table where Attribute in (01,950) and Attribute in (02, 951)

答案 1 :(得分:0)

您可以使用group byhaving

执行此操作
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子句对于您可能想要的每种产品属性的所有类型条件都非常灵活。