当前位置: 首页 > news >正文

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示:
在这里插入图片描述
其中 ABCDE 为前5名的问题种类,其中A问题有124个(出现了124次)

数据说明:

  • 整个数据集 包含很多项目
  • 一个项目 包含很多问题
  • 一个问题 选项 可认为是 类别值,所有出现的问题都落在这些类别范围内

需求梳理:前5名的排名依据于 问题数量,而不是按照某字段排序,而问题数量是按照 项目 + 问题 分组后统计的数量。

分步处理:
1.先分组统计,查询数据(屏蔽真实表和字段,但逻辑不变)

select 项目, 问题,count(*) as numfromGROUP BY 项目, 问题

结果:
在这里插入图片描述
可以看到上述部分截图中 有3个项目,分别是 0001/0009/0002,
其中 前2行和后2行都是 项目 0001的数据,表示它下面的4个问题种类 以及 统计数量。

2.把上述结果作为一张逻辑表,按照其中的数量字段 使用开窗函数 降序排序:

SELECT * FROM 
(SELECT 项目, 问题, 数量,row_number() over(partition BY 项目 order by 数量 desc) as rn FROM (select 项目, 问题,count(*) as 数量from 表名GROUP BY 项目, 问题) x
) x8c

结果如下所示:这是项目 0001 下排名前10的 问题 + 数量
在这里插入图片描述
项目0004的数据。。
在这里插入图片描述
到这一步,我们得到了每个项目下 的 所有问题,并且 问题按 数量倒序排名,还差最后一步:每个项目,只取排名前5的问题数据。

  1. 其实,我们只需要在上一步的sql 中 加上 where 条件过滤即可:
    where 排名 <= 5 FYI: 根据业务相应调整。
SELECT * FROM 
(SELECT 项目, 问题, 数量,row_number() over(partition BY 项目 order by 数量 desc) as rn FROM (select 项目, 问题,count(*) as 数量from 表名GROUP BY 项目, 问题) x
) x8c
where rn <= 5

在这里插入图片描述

http://www.lryc.cn/news/485244.html

相关文章:

  • HBase 安装与基本操作指南
  • Spring Boot应用中的文件压缩与解压技术实践
  • D69【 python 接口自动化学习】- python 基础之数据库
  • 410. 分割数组的最大值
  • Azure pipeline 通过git命令修改文件
  • LeetCode74. 搜索二维矩阵(2024冬季每日一题 6)
  • BPMN 2.0详细介绍
  • web——upload-labs——第四关——.htaccess文件绕过
  • 36.矩阵格式的等差数列 C语言
  • Java 语言的强大特性
  • ElementUI的日期组件中禁止选择小时、分钟、秒
  • 4.2 Android NDK 基础概念
  • PIL包在Python图像处理中的应用
  • ArcGIS Pro ADCore DAML
  • Clip结合Faiss+Flask简易版文搜图服务
  • 【机器学习】数学知识:欧式距离(Euclidean Distance)和曼哈顿距离(Manhattan Distance)
  • Redis 概 述 和 安 装
  • 数据仓库面试题集离线实时
  • Spring Boot框架:电商系统的技术革新
  • 一键抠图:免费安全的在线图片去除背景工具
  • vue项目PC端和移动端实现在线预览pptx文件
  • uniapp适配暗黑模式配置plus.nativeUI.setUIStyle适配DarkMode配置
  • EXCEL 或 WPS 列下划线转驼峰
  • 走进Linux的历史发展史
  • 学习yum工具,进行安装软件
  • union介绍及使用
  • 安全,服务器证书和SSL连接
  • Java结合ElasticSearch根据查询关键字,高亮显示全文数据。
  • Design Compiler:Topographical Workshop Lab2
  • 【C语言】连接陷阱探秘(1):声明与定义