Hive分组排序取topN的sql查询示例

Hive分组排序取topN的sql查询示例

要在Hive中实现分组排序并取每组的前N条记录,可以使用 ROW_NUMBER() 窗口函数结合 PARTITION BY 和 ORDER BY 子句。

以下是一个示例SQL查询,用于选择每个部门中工资最高的前3名员工:

c 复制代码
SELECT department, employee_id, employee_name, salary
FROM (
         SELECT
             department,
             employee_id,
             employee_name,
             salary,
             ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) as rn
         FROM employee
     ) ranked
WHERE rn <= 3;

在这个SQL查询中:

  • 内部查询根据工资降序为每个部门中的员工分配一个行号。
  • 外部查询将结果筛选为每个部门中的前3名员工(行号为1、2、3)。

您可以根据需要调整 rn <= 3 条件来选择不同数量的前N条记录。这个查询将为您提供每个分组中的前N条记录。

相关推荐
亿坊电商14 小时前
24H-无人共享KTV:如何实现安全的自助服务?
大数据·物联网·安全
草莓熊Lotso16 小时前
Git 分支管理:从基础操作到协作流程(本地篇)
大数据·服务器·开发语言·c++·人工智能·git·sql
q***333719 小时前
oracle 12c查看执行过的sql及当前正在执行的sql
java·sql·oracle
7***998721 小时前
GaussDB数据库中SQL诊断解析之配置SQL限流
数据库·sql·gaussdb
5***o5001 天前
PHP在电商中的支付集成
sql·ue5·rizomuv
6***B481 天前
存储过程(SQL)
android·数据库·sql
t***31651 天前
Docker 之mysql从头开始——Docker下mysql安装、启动、配置、进入容器执行(查询)sql
sql·mysql·docker
GIS数据转换器1 天前
GIS+大模型助力安全风险精细化管理
大数据·网络·人工智能·安全·无人机
hg01181 天前
今年前10个月天津进出口总值6940.2亿元
大数据
合作小小程序员小小店1 天前
桌面开发,超市管理系统开发,基于C#,winform,sql server数据库
开发语言·数据库·sql·microsoft·sqlserver·c#