如何计算状态为1的hive表中的最新userId?我们每天都会在配置单元中插入增量数据(userId,status,date)。 hive表包含具有不同日期的重复userId。所以我尝试了一个查询但得到了错误的结果:
select count(t1.userID)
from (select userId,
max(date) as date
from test group by userId) t1
join (select userId
from test
where status=1) t2
on t1.userId=t2.userID;
请帮忙。
答案 0 :(得分:0)
这样的事情应该有效:
SELECT
T1.USER_ID,
FROM
USER_TABLE T1
INNER JOIN (
SELECT
USER_ID,
MAX(UPDATE_DATE) AS MAX_DATE
FROM
USER_TABLE
GROUP BY USER_ID
) T2
ON T1.USER_ID = T2.USER_ID AND T1.UPDATE_DATE = T2.MAX_DATE
WHERE T1.STATUS = 1
答案 1 :(得分:0)
这项工作很好但很慢,有没有更好的选择。
选择 COUNT(1) 从 (从测试a中选择a.userId,a.date,a.status 加入 (SELECT userId,max(date)date FROM test GROUP BY userId)b ON(a.userId = b.userId AND a.date = b.date) 其中a.status = 1)c;