hive查询在分组过程中根据另一列选择一列

jm81lzqq  于 2021-06-02  发布在  Hadoop
关注(0)|答案(2)|浏览(471)

类似的问题也有,但解决它们并不能完全解决我的问题。考虑下表:

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;

无法解决重复类型问题。我能做些什么来达到这个目的?非常感谢

mlnl4t2r

mlnl4t2r1#

--使用子查询也可以实现。

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
wyyhbhjk

wyyhbhjk2#

而不是 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;

相关问题