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

hive面试题,超详细解析。各类型专利top 10申请人,以及对应的专利申请数

1. 需求概述

根据给定的专利明细表 t_patent_detail,需要查询出每种专利类型下申请数最多的前 10 位申请人,以及他们对应的专利申请数量。由于每个专利可以有一个或多个申请人,而申请人之间通过分号 隔开,因此需要进行拆分和统计。

2. 表结构说明

t_patent_detail 存储了专利的详细信息,主要字段如下:

  • patent_id:专利号
  • patent_name:专利名称
  • patent_type:专利类型
  • apply_date:申请时间
  • authorize_date:授权时间
  • apply_users:申请人(可能有多个,使用分号  隔开)

t_patent_detail 中的记录数大约为 10,000 条。示例数据如下:

patent_idpatent_namepatent_typeapply_dateauthorize_dateapply_users
P123456专利A发明专利2023-01-012023-06-01张三;李四;王五
P789012专利B外观设计专利2023-02-012023-07-01张三;赵六
P345678专利C实用新型专利2023-03-012023-08-01王五;李四

3. 查询目的

通过查询,输出每种专利类型下,专利申请数量最多的前 10 位申请人及其申请数量,按申请数量降序排列。

4. 查询步骤与逻辑

查询的主要步骤如下:

  1. 拆分申请人列表:使用 LATERAL VIEW 和 explode 函数将每个专利中的 apply_users(申请人)字段按分号拆分成多个申请人。
  2. 统计每个申请人在每种专利类型下的申请数:按专利类型和申请人进行分组,统计每个申请人在每个专利类型下的专利申请数。
  3. 为每个专利类型中的申请人排名:使用 DENSE_RANK() 函数按每个申请人在该专利类型下的申请数量进行排名。
  4. 筛选每个专利类型中的前 10 名申请人:通过 WHERE 子句,选择每种专利类型下排名前 10 的申请人。

 5. Hive 查询语句

WITH t AS (-- 1. 拆分每个专利的多个申请人并统计每个申请人在每种专利类型中的专利数量SELECTusers,            -- 申请人patent_type,      -- 专利类型COUNT(1) AS gs    -- 每个申请人在该专利类型下的专利数量FROM t_patent_detailLATERAL VIEW explode(split(apply_users, ';')) temTab AS users -- 拆分申请人字段GROUP BY users, patent_type   -- 按申请人和专利类型分组
),
t2 AS (-- 2. 对每种专利类型的申请人进行排名SELECT *, DENSE_RANK() OVER (PARTITION BY patent_type ORDER BY gs DESC) AS paiming -- 按专利数量排名FROM t
)
-- 3. 获取每种专利类型的 Top 10 申请人
SELECT *
FROM t2
WHERE paiming <= 10;  -- 只保留排名前10的申请人

6. 查询解析

  1. WITH t AS (...) 子查询

    • 在 WITH 子句中定义了一个临时表 t,该表的作用是拆分每个专利的 apply_users 字段,将其按分号  拆分成多个申请人,并统计每个申请人在每种专利类型下的申请数量。
    • LATERAL VIEW explode(split(apply_users, ';')) temTab AS users:首先使用 split() 函数将 apply_users 按照分号  拆分成多个申请人,然后通过 explode 函数将每个拆分后的申请人展成单独的行。
    • COUNT(1) AS gs:统计每个申请人在每个专利类型下的专利数量。
  2. WITH t2 AS (...) 子查询

    • 使用 DENSE_RANK() 函数对每个专利类型中的申请人按专利数量 gs 进行降序排名。DENSE_RANK() 会为相同数量的专利赋相同的排名,并且排名不跳跃。
    • PARTITION BY patent_type 确保排名是按每种专利类型独立进行的。
  3. SELECT * FROM t2 WHERE paiming <= 10

    • 最后,从子查询 t2 中选择排名前 10 的申请人数据。
    • paiming <= 10:只保留排名前 10 的申请人数据,确保每种专利类型只返回前 10 名。

7. 结果示例 

userspatent_typegspaiming
张三发明专利51
李四发明专利42
王五发明专利33
张三外观设计专利61
赵六外观设计专利42
王五实用新型专利51
李四实用新型专利32

http://www.mrgr.cn/news/67830.html

相关文章:

  • 融合虚拟化与容器技术,打造灵活又安全的AI算力服务
  • CAD图纸加密软件哪个好?分享六个CAD图纸加密的制胜法宝,图纸安全再升级!
  • 2021 数二真题
  • 【MFC编程(一)】MFC概述
  • AI 大模型与 GKData:重塑软件开发新范式
  • 市场分化!汽车零部件「变天」
  • python入门到精通知乎万赞推荐书籍《流畅的Python》,《流畅的Python》PDF免费下载
  • Hive中各种Join的实现
  • 【系统架构设计师】高分论文:论企业应用系统的分层架构风格
  • 数据结构之单链表(C语言)
  • linux基础知识
  • day-81 打家劫舍 II
  • 焊接覆层耐磨板行业全面且深入的分析
  • 【零基础学习CAPL】——XML工程创建与使用详解
  • uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
  • Java题目笔记(十四)Date +综合练习
  • ruoyi-vue集成tianai-captcha验证码
  • 如何将现有VUE项目所有包更新到最新稳定版
  • C++之queue容器
  • 前端-计算机网络
  • 信息流不同行业账户流量池有区别吗?
  • 宠物空气净化器是养宠智商税吗?真实测评霍尼韦尔、希喂、米家
  • 【HarmonyOS】鸿蒙中Interface实例实现的书写格式
  • 从Apache Atlas到Aloudata BIG,数据血缘解析有何改变?
  • 为什么Uptime+Kuma本地部署与远程使用是网站监控新选择?
  • LeetCode 热题100 之 栈