SQL - 查询同一个列但有两个不同的条件
问题描述:
我有一个名为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特定产品?
答
请考虑一下:
select category,
count(*) total_number_products,
sum(case available when 'DE' then 1 else 0 end) de_number_products
from products
group by category
答
,你可以在这里做有条件聚集:
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;