[英]Hive query select one column depending on another column during group by
有类似的问题,但他们的解决方案不能完全解决我的问题。 请考虑下表:
id type time
1 a 1
1 a 2
1 b 3
2 b 1
2 b 2
我想要的是具有最小时间的id和与该时间相关联的类型,因此结果应该是:
id type time
1 a 1
2 b 1
(如果时间与不同类型有关系,可以选择任何类型)我当前的查询如下所示:
SELECT id, type, min(time) FROM t GROUP BY id, type;
它无法解决重复类型问题。 我可以做一个查询来实现吗? 非常感谢
而不是group by
,使用row_number()
:
select t.*
from (select t.*,
row_number() over (partition by id order by time) as seqnum
from t
) t
where seqnum = 1;
- 使用子查询也可以实现它。
CREATE TABLE #Temp (
id INT
,[type] CHAR(1)
,[time] INT
)
INSERT INTO #Temp VALUES
(1,'a',1),
(1,'a',2),
(1,'b',3),
(2,'b',1),
(2,'b',2)
SELECT DISTINCT T.id
,T.type
,DT.MinTime
FROM #Temp T
INNER JOIN (
SELECT MIN(TIME) AS MinTime
FROM #Temp
GROUP BY [TYPE]
) AS DT ON T.[time] = DT.MinTime
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.