我有一个如下所示的输入表,正在尝试获取聚合计数:
箱子/桶是固定的。这个例子有桶/箱-1到90,97,98。这些桶/箱需要计数。
只要输入表中有可用的数据,我就可以得到所有箱子的计数。但当数据不可用时,它不会显示为零计数。
非常感谢您的帮助。提前谢谢。
示例:“97”值不出现在年份=2015中。所以它在输出表中应该有零计数。
我试过的代码:
选择'ada'作为属性,year,'98'作为bin,count(year)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative where ada=98
按年份分组联合所有选择'ada'作为属性,年份,'97'作为bin,count(year)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative其中ada=97
group by year union all选择'ada'作为属性,year,'1 to 90'作为bin,count(year)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative其中ada介于1和90之间group by year
2条答案
按热度按时间mbjcgjjk1#
选择'ada'作为属性,year,'98'作为bin,count(year)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative where ada=98
分组按年份联合所有选择'ada'作为属性,年份,'97'作为bin,sum(当ada=97时为1,否则为0结束)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative where ada=97
group by year union all选择'ada'作为属性,year,'1 to 90'作为bin,count(year)作为bin\u count from mrmg\u atrib\u monit\u psi\u db.ada\u data\u types\u negative其中ada介于1和90之间group by year
解决方案:在select语句的sum(case)末尾替换where函数也有助于获得零计数
avkwfej42#
“预定义”我想你的意思是你有一个bin定义表。然后你可以使用
cross join
生成行和left join
要生成数据: