对于每组TS
,随机存在的行具有不同的Name
,而行的数量为Count
。我想执行以下操作:
Count
获取名称顺序为NAME的最新一组TIMESTAMP。对于最新组中的3行以上,其余的总和为Count
,并重命名为“其他”。TIMESTAMP
组,在步骤1中找到具有NAME
的行。Count
填充为0。看一下插图:
TS | Name | Count
=============================
1552286160 | Apple | 7
1552286160 | Orange | 8
1552286160 | Grape | 8
1552286160 | Pear | 9
1552286160 | Kiwi | 10
1552286160 | Berry | 3
1552286160 | Carrot | 2
1552286100 | Apple | 10
1552286100 | Orange | 12
1552286100 | Grape | 14
1552286100 | Pear | 16
1552286100 | Kiwi | 9
1552286040 | Apple | 4
1552285980 | Peach | 8
对于这个数据集,我希望拥有以下内容:
TS | Name | Count
=============================
1552286160 | Kiwi | 10
1552286160 | Pear | 9
1552286160 | Grape | 8
1552286160 | Other | 8 + 7 + 3 + 2
1552286100 | Kiwi | 9
1552286100 | Pear | 16
1552286100 | Grape | 14
1552286100 | Other | 10 + 9
1552286040 | Kiwi | 0
1552286040 | Pear | 0
1552286040 | Grape | 0
1552286040 | Other | 4
1552286040 | Kiwi | 0
1552286040 | Pear | 0
1552286040 | Grape | 0
1552286040 | Other | 8
这实际上是来自MySQL top-N ranking and sum the rest of same group的扩展解决方案,但是,该解决方案并未将每个TS
组与最新TS
组(在本例中为{{1 }}。
我准备的SQL Fiddle位于此处:http://sqlfiddle.com/#!9/4e13004/1
如果有任何想法,谢谢。