SQL - 查询相同的列但具有2个不同的条件

时间:2017-07-26 17:01:18

标签: sql oracle

我有一个名为Products的表,其中包含整个目录。该表具有唯一的Product_ID,它所属的类别,然后是可用的字段,显示可以销售产品的国家/地区(美国,英国,德国,...)。如果产品可以多件销售,那么Product_ID和Available的组合如下所示:

23523 DE
23523 UK
23523 US
...

我需要进行一个产生3列的查询:

Category   Total_Number_Products   DE_Number_Products

我可以在2个单独的查询中执行此操作,一个用于Total_Number_Products,另一个用于DE_Number_Products,每个查询带有一个Count - 第一个没有任何条件,第二个查看是否"可用=' DE& #39;"

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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;