【发布时间】:2019-06-18 21:15:42
【问题描述】:
我试图通过从两个不同的日期列中获取最大值来查询一个表,并输出两个日期都具有最大值的所有记录
该表有 6 列,包括 st_id(string)(有多个相同 id 的条目)、as_of_dt(int) 和 ld_dt_ts(timestamp)。从这个表中,我试图获取 as_of_dt 和 ld_dt_ts 的最大值,并按 st_id 分组并显示所有记录。
这很完美,但并不是最理想的
SELECT A.st_id, A.fl_vw, A.tr_record FROM db.tablename A
INNER JOIN (
SELECT st_id, max(as_of_dt) AS as_of_dt, max(ld_dt_ts) AS ld_dt_ts
From db.tablename
group by st_id
) B on A.st_id = B.st_id and A.as_of_dt = B.as_of_dt and A.ld_dt_ts= B.ld_dt_ts
--
预期结果应返回具有 as_of_dt 和 ld_dt_ts 最大值的 st_id,即,这将是每个 st_id 的最新记录。
【问题讨论】:
-
此外,关于查询性能的问题总是需要给定查询的 EXPLAIN
-
这是经典的查表任务,提供的sql是使用join的,效率不如解析函数,因为需要两次表扫描和一次join。我认为这个问题不应该结束。
标签: mysql hive query-optimization hiveql impala