在mysql中使用group by和sum保持零值

v64noz0r  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(585)

我有两张table,两种不同的类型和预订
职业类型

id | name
1 | foo
2 | bar
3 | baz

预订

id | career_type_id | details
1 | 1 | foo
2 | 1 | bar
3 | 2 | baz

我的bookings表中有很多关于所有职业类型的条目,但career\u types.id为3的除外。
我需要一个查询,它将列出我的所有职业类型.name以及每个预订的数量,如果职业类型为.id=1,则没有预订。我要返回0。
到目前为止我一直在尝试

SELECT career_types.name, sum(bookings.id)
FROM career_types
LEFT JOIN bookings ON (career_types.id = bookings.career_type_id)
GROUP BY career_types.id

我想要的结果是

career_types.name | sum
foo | 2
bar | 1
baz | 0

但目前我还不能为baz提供任何输出。

lkaoscv7

lkaoscv71#

聚合函数的计算中只包含非空值。对于sum和大多数聚合函数,如果没有遇到非null值,则结果为null。如果需要零,而不是空,可以简单地用以下公式说明: IFNULL(SUM(x), 0)

相关问题