因此,我目前正在编写一个impala查询,该查询实际上是根据几列对数据进行分组,并根据最新列取其余列的值。但是,由于我想根据日期对数据进行分组,因此在比较数据时查询总是返回false。
我的代码如下。如果我不包括tstamp比较,则代码可以正常工作,但无法根据日期将其分组。
`select * from mytab as x
where x.tstamp =
(select max(y.tstamp) from mytab as y
where x.id_ = y.id_ and x.id = y.id and
to_date(x.tstamp) = to_date(y.tstamp));
`
,数据如下。下面的数据只是真实数据的一部分,其中包含许多天的数据并具有更多列。
tstamp id id_
2018-06-07 06:39:26.470 10002071 5438221
2018-06-07 06:39:26.533 10002071 5438221
2018-06-07 06:39:35.223 10002071 5438221
2018-06-07 06:39:35.343 10002071 5438222
2018-06-07 06:39:39.087 10002071 5438222
2018-06-07 06:39:43.390 10002071 5438222
2018-06-07 06:39:43.417 10002071 6268470
2018-06-07 06:39:44.700 10002071 6268470
2018-06-07 06:39:48.573 10002071 6268470
答案 0 :(得分:0)
使用窗口功能:
select t.*
from (select t.*,
max(tstamp) over (partition by id_, id, to_date(tstamp) as max_tstamp
from t
) t
where tstamp = max_tstamp;
也就是说,您的版本应该可以使用,但这很简单。