我的表格结构如下:
id value hour
1 4 176475
2 2 176475
3 3 176475
4 2 176475
1 2 184563
2 1 184563
3 4 184563
4 3 184563
... ... ...
1 2 N
2 3 N
3 1 N
4 4 N
关键属性是将数据拆分为按升序排列的小时数。小时'时间戳被截断以每天强制执行24个桶。我想做几件事:
value
秒。有一种简单的方法吗?我知道我可以使用NTILE来标记数据,但这在Spark中是非常昂贵的操作。
编辑:
汇总小时1-3的预期结果:
id value
1 9
2 7
3 10
4 8
这些值已经弥补,但我们的想法是在3个小时的每个小时中对ID的值求和,这样我每个ID就有一个值,而不是3个。
答案 0 :(得分:0)
这是您正在寻找的查询:
SELECT id, SUM(value) as `value`
FROM yourTableHere
WHERE hour between (NOW() - INTERVAL X HOUR) AND NOW()
GROUP BY id, hour
打破查询。
value
。hour
介于X小时前和现在之间。id
和hour
对结果进行分组。将X替换为您希望的小时数的1/3/8或更多。