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条记录。

相关推荐
Java后端的Ai之路2 小时前
Text-to-SQL与智能问数完全指南:基本概念、核心原理、Python实战教学及企业项目落地
数据库·python·sql·text-to-sql·智能问数
Elastic 中国社区官方博客2 小时前
Prometheus Remote Write 在 Elasticsearch 中的摄取原理
大数据·数据库·elasticsearch·搜索引擎·信息可视化·全文检索·prometheus
YMatrix 官方技术社区11 小时前
美国·硅谷|YMatrix 即将亮相 Postgres Conference 2026,前瞻 AI 时代的数据基座
数据库·数据仓库·postgresql·时序数据库·ymatrix
深圳市九鼎创展科技12 小时前
MT8883 vs RK3588 开发板全面对比:选型与场景落地指南
大数据·linux·人工智能·嵌入式硬件·ubuntu
imuliuliang13 小时前
存储过程(SQL)
android·数据库·sql
一嘴一个橘子13 小时前
sql 的 count、avg
sql
渣渣盟14 小时前
Flink事件时间与窗口操作实战指南
大数据·flink·scala
Yyyyy123jsjs14 小时前
如何选用外汇接口实现稳定数据抓取?
大数据·python·金融
孟意昶14 小时前
Doris专题31-SQL手册-基础元素
大数据·数据库·数据仓库·分布式·sql·知识图谱·doris
飞飞传输15 小时前
国产化FTP替代方案哪个好?选对平台让传输更安全高效
大数据·运维·安全