athena - 对每列数据使用 max 函数
athena - using max function for each column data
有什么方法可以根据列上的信息使用一个函数吗?
我有一个名为 env 的列,它有两种类型的数据,即 'eu' 或 'us'
我还有一列时间戳。我需要一种方法来通过单个查询在每列中显示每个环境的最大时间戳。
有什么办法可以做到这一点吗?
我的table:
session timestamp env
4753f3feb27087c8f4c4bd79ad5cff55 1617570800000 US
5f08a8b6347ac27d93a6ea2f42f090b5 1617560800000 EU
bcab7e0a9f0af4b2e9cde11d36dc2e8a 1617580800000 EU
bcab7e0a9f0af4b2e9cde11d36dc2e8a 1617520800000 US
我想要什么
max_eu_ts max_us_ts
1617580800000 1617570800000
你只是在找group by
?
select env, max(timestamp)
from t
group by env;
或者,如果您想要完整的行,请使用 row_number()
:
select t.*
from (select t.*,
row_number() over (partition by env order by timestamp desc) as seqnum
from t
) t
where seqnum = 1;
那么你只需要使用max(timestamp)
。一个用于 eu
,另一个用于 us
。
使用 case when
语句,您只能从 env
列中具有 us
的行中 select max(timestamp) 来计算 max_us_ts。 max_eu_ts.
相同
select
max(case when env='eu'then timestamp end) max_eu_ts ,
max(case when env='us' then timestamp end) max_us_ts
from mytable
有什么方法可以根据列上的信息使用一个函数吗? 我有一个名为 env 的列,它有两种类型的数据,即 'eu' 或 'us' 我还有一列时间戳。我需要一种方法来通过单个查询在每列中显示每个环境的最大时间戳。
有什么办法可以做到这一点吗?
我的table:
session timestamp env
4753f3feb27087c8f4c4bd79ad5cff55 1617570800000 US
5f08a8b6347ac27d93a6ea2f42f090b5 1617560800000 EU
bcab7e0a9f0af4b2e9cde11d36dc2e8a 1617580800000 EU
bcab7e0a9f0af4b2e9cde11d36dc2e8a 1617520800000 US
我想要什么
max_eu_ts max_us_ts
1617580800000 1617570800000
你只是在找group by
?
select env, max(timestamp)
from t
group by env;
或者,如果您想要完整的行,请使用 row_number()
:
select t.*
from (select t.*,
row_number() over (partition by env order by timestamp desc) as seqnum
from t
) t
where seqnum = 1;
那么你只需要使用max(timestamp)
。一个用于 eu
,另一个用于 us
。
使用 case when
语句,您只能从 env
列中具有 us
的行中 select max(timestamp) 来计算 max_us_ts。 max_eu_ts.
select
max(case when env='eu'then timestamp end) max_eu_ts ,
max(case when env='us' then timestamp end) max_us_ts
from mytable