2017-07-26 186 views
-1

我有一个名为Products的表,它包含整个目录。该表具有唯一的Product_ID,它所属的类别,然后是可用字段,显示哪些国家(美国,英国,德国等)可以销售该产品。如果产品可以在多个销售再组合PRODUCT_ID和可用的模样:SQL - 查询同一个列但有两个不同的条件

23523 DE 
23523 UK 
23523 US 
... 

我需要做的是产生3列的查询:在2次独立的查询

Category Total_Number_Products DE_Number_Products 

我能做到这一点,一个用于Total_Number_Products,另一个用于DE_Number_Products,每个都有一个Count - 第一个没有任何条件,第二个检查“Available ='DE'”。

我该如何或应该在同一个查询中用COUNT(Product_ID)两次查询同一列,一次查询所有产品,然后查找DE特定产品?

回答

1

请考虑一下:

select category, 
     count(*) total_number_products, 
     sum(case available when 'DE' then 1 else 0 end) de_number_products 
from products 
group by category 
0

,你可以在这里做有条件聚集:

select category, 
    count(*) as total_number_products, 
    count(case when country = 'DE' then 1 end) as DE_number_products 
from your_table 
group by category; 
相关问题