问题描述
似乎我的版本已经过时,并且不支持ROW_NUMBER(),PARTITION BY和OVER()。有sql替代方法吗?
编辑:我正在使用Hive 0.10。窗口功能仅在{1} {1}以后的{1}中可用。
解决方法
如果您的Hive版本不支持窗口功能,则可以使用相关子查询来模拟row_number()
:
select brand,name,price,1 + (select count(*) from products p1 where p1.brand = p.brand and p1.price > p.price) rn
from products p
实际上,这是模拟rank()
,而不是row_number()
-除非您对相同品牌的产品有重复的价格,否则结果是相同的。
在RDBMS SQL中,您可以使用以下查询:
WITH CTE AS (
SELECT 0 AS DIST
UNION ALL
SELECT DIST+1 FROM CTE WHERE DIST<=1000
)
SELECT * FROM CTE ;
不确定它是否适用于HQL。在Hive中试用,让我知道