计数为零时未显示PostgreSQL行

时间:2019-03-07 06:48:17

标签: sql postgresql

我正在尝试输出2018年每个国家/地区的客户下的订单总数。这是我的查询:

select country, count(country) 
from customers, orders 
where customers.id = orders.id and orders.date >= '2018-01-01' and 
    orders.date <='2018-12-31' 
group by(country); 

这将打印出正确的值,但不会输出订单为0的国家。我也尝试了不同类型的联接(右联接,左联接等),但还是没有运气。任何人都知道如何解决此问题或知道它可能有什么问题吗?

2 个答案:

答案 0 :(得分:2)

使用left join并在ON子句中移动where条件

select country, count(orders.id) 
from customers left join orders 
on customers.id = orders.id and orders.date >= '2018-01-01' and 
    orders.date <='2018-12-31' 
group by country

答案 1 :(得分:1)

使用现代联接而不是逗号分隔的联接,请计入orders.id

select country, count(orders.id) 
from customers left join  orders 
on  customers.id = orders.id  and  orders.date >= '2018-01-01' and orders.date <='2018-12-31' 
group by country

分组后不需要括号