【问题标题】:kdb+: group by and sum over multiple columnskdb+:对多列进行分组和求和
【发布时间】:2015-04-29 12:35:45
【问题描述】:

考虑以下数据:

table:

time          colA    colB     colC
-----------------------------------
11:30:04.194  31      250      a
11:30:04.441  31      280      a
11:30:14.761  31.6    100      a
11:30:21.324  34      100      a
11:30:38.991  32      100      b
11:31:20.968  32      100      b
11:31:56.922  32.2    1000     b
11:31:57.035  32.6    5000     c
11:32:05.810  33      100      c
11:32:05.810  33      100      a
11:32:14.461  32      300      b

现在我怎样才能sumcolB只要colC是一样的,而不会丢失时间顺序。

所以输出将是:

first time    avgA    sumB     colC
-----------------------------------
11:30:04.194  31.2    730      a
11:30:38.991  32.07   1200     b
11:31:57.035  32.8    5100     c
11:32:05.810  33      100      a
11:32:14.461  32      300      b

到目前为止我所拥有的:

select by time from (select first time, avg colA, sum colB by colC, time from table)

但输出没有按colC 分组。查询应该是什么样子?

【问题讨论】:

    标签: kdb


    【解决方案1】:

    这个怎么样?

    get select first time, avg colA, sum colB, first colC by sums colC<>prev colC from table
    

    【讨论】:

      【解决方案2】:

      使用differ 实现此目的的方式略有不同:

      value select  first time, avg colA, sum colB , first colC by g:(sums differ colC) from table 
      

      【讨论】:

        猜你喜欢
        • 2015-05-17
        • 1970-01-01
        • 2019-01-25
        • 1970-01-01
        • 2014-10-21
        • 2023-04-02
        • 2018-09-01
        • 1970-01-01
        相关资源
        最近更新 更多