我需要计算表中每种类型有多少行。但是,即使没有相关的行,我仍然需要在结果集中显示每个类型及其计数器。如果没有相关行,计数器将为0。
这是我当前的sql:
SELECT student_type, COUNT(*) as 'count'
FROM students
WHERE student_type IN (10, 12)
AND registration_time BETWEEN '2018-1-1' AND '2018-12-31'
GROUP BY student_type;
仅当在指定日期有student\类型为10或12的行时,当前sql才会返回结果,但如果没有行,则不会返回任何结果。
我需要结果总是这样:
student_type count
10 0
12 0
3条答案
按热度按时间txu3uszq1#
--创建两个数据集表a(所有要显示的stydent类型)和表b(每种类型的计数),然后从表a中选择所有内容,然后将outer join保留到b,这意味着如果b中没有相应的记录,则会得到null(可以将其转换为0)
从中选择a.student类型isnull(b.cnt,0)作为“count”
左外连接
(选择学生类型,按学生类型将(*)计算为“cnt”,其中学生类型为(10,12),注册时间为“2018-1-1”和“2018-12-31”之间的组;)b on a.student\u type=b.学生类型;
mzillmmw2#
我用左连接就行了
或使用“on the fly”左连接:
inkz8wg93#
考虑条件聚合,在其中移动
WHERE
条件SELECT
表达式以避免筛选出零条件记录。下面是True
由分组聚合确定的条件,该条件等于零将返回的计数。