我有一个名为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的产品?
答案 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;