在MySQL中使用GROUP BY和SUM保持零值

时间:2018-09-04 21:16:33

标签: mysql join group-by sum

我有两个表career_types和bookings

career_types

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

预订

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

我的预订表中有很多关于所有职业类型的条目,但career_types.id为3除外。

我想要一个查询,该查询将列出我所有的career_types.name以及每个预订有多少个,并且在career_types.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的任何输出。

1 个答案:

答案 0 :(得分:0)

聚合函数的计算中仅包含非空值。对于SUM和大多数聚合函数,如果未遇到非null值,则结果为null。如果需要零而不是零,则可以使用以下方法简单解决: package viikkotehtavat; import java.util.ArrayList; import java.util.List;`` import java.util.Scanner; public class Lengthofwords { public static void main(String[] args) { Scanner sc = new Scanner(System.in); List<String> words = new ArrayList<>(); for (int i = 1; i <= 5; i++) { System.out.print("Syötä sana " + i + "/5: "); words.add(sc.nextLine()); } int sum = 0; System.out.println("\nTotal amount of letters in the words are: " + sum); sc.close(); } }