【发布时间】:2015-06-10 11:02:59
【问题描述】:
我有以下疑问:
SELECT t.range,
Count(*)
FROM (
SELECT CASE
WHEN creditscore BETWEEN 300
AND 499
THEN '[300, 499]'
WHEN creditscore BETWEEN 500
AND 699
THEN '[500, 699]'
WHEN creditscore BETWEEN 700
AND 850
THEN '[700, 850]'
END AS range
FROM customer
) T
GROUP BY t.range;
这给了我以下信息:
CS range COUNT(*)
---------- ----------
[700, 850] 7
[500, 699] 13
我想要以下输出:
CS range COUNT(*)
---------- ----------
[300, 499] 0
[500, 699] 13
[700, 850] 7
谁能帮帮我?
更新
我执行了贾斯汀提供的代码。它给了我以下信息:
DESCRIPTIO COUNT(*)
---------- ----------
[300, 499] 1
[700, 850] 7
[500, 699] 13
SQL> SELECT COUNT(*) FROM customer where creditscore BETWEEN 300 AND 499;
COUNT(*)
----------
0
【问题讨论】:
-
用范围创建一个临时表,然后
LEFT JOIN将它添加到您的结果中,将 null 替换为 0。