Hive / SQL 查询每个键的前 n 个值
Posted
技术标签:
【中文标题】Hive / SQL 查询每个键的前 n 个值【英文标题】:Hive / SQL query for top n values per key 【发布时间】:2018-06-21 17:51:35 【问题描述】:我想要每个键的前 2 个值。结果如下:
hive 查询应该是什么。
【问题讨论】:
【参考方案1】:您可以使用 window function 和 OVER() 关闭:
select col1,col2 from (SELECT col1,
col2,
ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2 DESC) AS row_num
FROM data)f
WHERE f.row_num < 3
order by col1,col2
【讨论】:
假设我有另一列 col3,我想显示 col3 的值。所以我正在编写以下代码: select col1,col3,col2 from (SELECT col1,col3, col2, ROW_NUMBER() OVER (PARTITION BY col1,col3 ORDER BY col2 DESC) AS row_num FROM data)f WHERE f.row_num 请分享错误以及您正在使用的表格和版本的示例。 表:创建表数据(Id Serial,col1 VARCHAR(70) NOT NULL,col3 varchar(70),col2 integer,PRIMARY KEY(Id));插入数据(col1,col3,col2)值('a','p','43'),('a','p','11'),('b','q','65 '), ('b','q', '33'), ('c','r', '11'), ('c','r', '22'), ('c', 'r', '33'), ('a','p', '55') ;查询: select col1,col2,col3 from (SELECT col1, col2, col3 ROW_NUMBER() OVER (PARTITION BY col1,col3 ORDER BY col2 DESC) AS row_num FROM data)f WHERE f.row_num 错误:查询错误:错误:ER_PARSE_ERROR:您的 SQL 语法有错误;检查与您的 mysql 服务器版本相对应的手册,以在第 2 行的 '() OVER (PARTITION BY col1,col3 ORDER BY col2 DESC) AS row_num FROM data)f WHERE' 附近使用正确的语法 col3 db-fiddle.com/f/mx2NaLgzvYLvq3gGLkYvZG/0 后面少了一个逗号以上是关于Hive / SQL 查询每个键的前 n 个值的主要内容,如果未能解决你的问题,请参考以下文章