0

我的目标是按特定字段对我的数据进行分组,并从该组的另一个字段中选择最新值。

我有下表:

| type | count | action | time                         |
   a       5      put     2021-04-21 15:13:02.104308224 
   b       7      put2    2021-04-20 15:13:02.104308224 
   b       1      get     2021-04-19 15:13:02.104308224 
   a       4      put6    2021-04-18 15:13:02.104308224 
   c       5      get     2021-04-17 15:13:02.104308224 
   a       6      put     2021-04-17 15:13:02.104308224 

我的声明如下:

 SELECT
    type,
    SUM(count) as total,
FROM mydb.mytable
WHERE time between ago(1h) and now()
GROUP type

我最终会得到以下行:

| type | total
   a      15  
   b      8
   c      5

问题是,我需要向每一行(分组的)添加最近行的操作-所以应该是

| type | total | action
   a      15      put
   b      8       put2
   c      5       get

如何实现?谢谢!

4

1 回答 1

0

如果它支持窗口功能:

select 
   type,
   lastaction, 
   SUM(count) as total
  from (
    SELECT   *, 
    first_value(action) over (partition by type order by time desc) lastaction
    FROM mydb.mytable
    WHERE time between ago(1h) and now()
)
GROUP BY type, lastaction
于 2021-04-21T16:10:35.057 回答