我正在使用的sql查询
表中的结果
我要做的是,我不想只在num\u opens实际计数的地方有值,我想让它显示所有潜在的num\u opens值,介于最小值和最大值之间,它们的总和为0。例如,在照片中,我们看到一个跳跃之间
打开次数:7总计:1
打开次数:10,总计:1
但我希望是这样
打开次数:7总计:1
打开次数:8总计:0
打开次数:9总计:0
打开次数:10,总计:1
同样地,对于所有潜在的numè,打开最小值和最大值之间的值(11-15,15-31,31-48)。这是很棘手的,因为每天的最大值可能是不同的(今天的最大值是48,但明天可能是37),所以我需要拉最大值不知何故。
谢谢您!
2条答案
按热度按时间bkhjykvo1#
你可以用
generate_array()
以及unnest()
:vjhs03f72#
首先需要一个参考表。从你的照片上可以看出
users
,但实际上任何一张(足够大的)table都可以。首先,您将使用
rank()
或者row_count()
功能。或者如果你的users.id
没有空隙,使用起来更容易。SELECT *, rank() OVER (ORDER BY id) as reference_value FROM users
这将生成一个表1....n
为了users
.现在加入到该表中,但从加入的表中计数:
但这行太多了!你肯定有比这些事件计数更多的用户。所以在里面放一个快速过滤器。