SQL/Hive选择具有特定列值的第一行
考虑以下3列表格结构:SQL/Hive选择具有特定列值的第一行,hive,hiveql,Hive,Hiveql,考虑以下3列表格结构: id, b_time, b_type id是一个字符串,表中将有多行具有相同的id。 b_time是时间戳,b_type可以有两个可能的值中的任意一个-'A'或'b' 我想选择满足以下两个条件之一的所有行(按优先级): 对于所有ID,选择时间戳最高的行,其中b_type='A' 如果对于id,没有b_type='A'所在的行,则选择时间戳最高的行,而不考虑b_type值 请推荐解决此问题的sql查询(即使它需要创建临时中间表)。找到了一种简单直观的方法: SELECT
id, b_time, b_type
id
是一个字符串,表中将有多行具有相同的id。
b_time
是时间戳,b_type
可以有两个可能的值中的任意一个-'A'或'b'
我想选择满足以下两个条件之一的所有行(按优先级):
请推荐解决此问题的sql查询(即使它需要创建临时中间表)。找到了一种简单直观的方法:
SELECT * FROM
(SELECT id
, b_time
, b_type
, ROW_NUMBER() OVER (PARTITION BY id ORDER BY b_type ASC,b_time DESC) AS RN
FROM your_table
)
WHERE RN = 1
找到了一种简单直观的方法:
SELECT * FROM
(SELECT id
, b_time
, b_type
, ROW_NUMBER() OVER (PARTITION BY id ORDER BY b_type ASC,b_time DESC) AS RN
FROM your_table
)
WHERE RN = 1