首页 > 解决方案 > 如何在sql中获取计数为0的列

问题描述

我正在尝试查找每家石油公司的销售数量。但是,我也想包括没有销售但我不知道该怎么做的石油公司。该stations表包括所有电台,但sales仅包括实际有任何销售的电台。

这就是我如何找到每个加油站的销售数量,但这不包括销售额为 0 的公司:

select stations.company,count(sales.sale) 
from stations 
   join sales on stations.id=sales.stationid 
group by stations.company;

我的想法是与另一个查询创建一个联合,该查询仅找到销售额为 0 的公司,但我不知道如何获取其中值为 0 的列。我尝试添加having count(sales.sale) = 0,但由于没有销售的电台不会出现在不起作用的销售表中。

我查看了类似的堆栈溢出问题,但它们似乎都使用不同类型的连接进行引用,但是我尝试使用左/右外/内连接但没有运气。

标签: sqlpostgresql

解决方案


您没有提供最小的可重现示例,所以我不能完全确定,但似乎需要 LEFT JOIN。试试下面的查询:

SELECT          stations.company, count(sales.sale) AS TotalSales
FROM            stations 
LEFT JOIN       sales ON stations.id=sales.stationid 
GROUP BY        stations.company

推荐阅读