繁体   English   中英

Hive查询在分组依据期间根据另一列选择一列

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM