SELECT
input_table.attribute,
bins.bin,
COUNT(input_table.bin) bin_count
FROM
(VALUES (96),
(97),
(98))bins (bin)
left JOIN input_table
ON bins.bin = input_table.bin
group by bins.bin,input_table.attribute
SELECT 'ada' attribute, 96 bin, COUNT(*) FROM input_table WHERE bin = 96
UNION ALL SELECT 'ada' attribute, 97 bin, COUNT(*) FROM input_table WHERE bin = 97
UNION ALL SELECT 'ada' attribute, 98 bin, COUNT(*) FROM input_table WHERE bin = 98
这些类型的查询 GROUP BY 将始终返回某些内容,即使没有与 WHERE 条件。 db小提琴演示:
attribute | bin | (No column name)
:-------- | --: | ---------------:
ada | 96 | 3
ada | 97 | 0
ada | 98 | 5
2条答案
按热度按时间7gyucuyw1#
你可以试着用
select from values
语法mzillmmw2#
我认为你把逻辑搞得太复杂了。为了得到你期望的结果,你可以
UNION ALL
三个简单的查询如下:这些类型的查询
GROUP BY
将始终返回某些内容,即使没有与WHERE
条件。db小提琴演示: