HiveSQL面试题

server/2024/12/2 13:00:44/

一、各类型专利top 10申请人,以及对应的专利申请数

1)表名:t_patent_detail (专利明细表)

2)表字段:专利号(patent_id)、专利名称(patent_name)、专利类型(patent_type)、申请时间

(aplly_date)、授权时间(authorize_date)、申请人(apply_users)

3)说明:同一个专利,可以有1到多个申请人,多人之间按分号隔开。本表记录数约1万条。例

如:

4)请写出hive查询语句,各类型专利top 10申请人,以及对应的专利申请数

解题思路

  • 爆炸函数炸开apply_users(注意不要忘记分隔符

  • 按照专利种类,申请人进行分组,得到每个种类中每个人申请了多少次

  • 用排名函数进行倒序排序(这里用的dense_rank)

  • 取top10

代码

create table t_patent_detail(patent_id string,patent_name string,patent_type string,apply_date date,authorize_date date,apply_users string
);with t1 as (select patent_type,apply_user from t_patent_detail lateral view explode(split(apply_users,';')) t1 as apply_user
), t2 as (select patent_type,apply_user,count(*) cou from t1 group by patent_type,apply_user
),t3 as (select *,dense_rank() over (partition by patent_type,apply_user order by cou desc) den from t2
)select * from t3 where den<=10;

二十、查询出用户连续三天登录的所有数据记

用户登录记录表
id           dt
1    2024-04-25 
1    2024-04-26 
1    2024-04-27
1    2024-04-28
1    2024-04-30
1    2024-05-01
1    2024-05-02
1    2024-05-04
1    2024-05-05
2    2024-04-25
2    2024-04-28
2    2024-05-02
2    2024-05-03
2    2024-05-04

期望结果:

解题思路

  • 利用log写出上一条和上上一条的信息,如果为空则返回该条的dt

  • 利用datediff对日期进行相减,如果该条dt与上条上上条之差都为-1,即该用户连续登录了三天

代码

建表
create table user_log(id int,dt string
)row format delimited
fields terminated by ',';
drop table user_log;
导入数据
load data local inpath '/home/20.txt' into table user_log;
求解
with t1 as (select *,nvl(lag(dt,1) over(),dt) dt2,nvl(lag(dt,2) over (),dt) dt3 from user_log
),t2 as (select *,datediff(dt,dt2) df1,datediff(dt2,dt3) df2 from t1
)select id,dt from t2 where df1 = -1 and df2 = -1;


http://www.ppmy.cn/server/140604.html

相关文章

element-plus按需引入报错AutoImport is not a function

官网文档&#xff1a;快速开始 | Element Plus webpack配置 // webpack.config.js const AutoImport require(unplugin-auto-import/webpack) const Components require(unplugin-vue-components/webpack) const { ElementPlusResolver } require(unplugin-vue-components…

电工领域文档规范引用格式说明

》》国内电工领域的论文引用格式是怎样的&#xff1f; 在国内电工领域的学术论文中&#xff0c;通常采用的引用格式是《中国学术期刊&#xff08;光盘版&#xff09;检索与评价数据规范》&#xff08;简称《规范》&#xff09;或《文后参考文献著录规则》&#xff08;GB/T 771…

linux系统重要目录!!!

文章目录 Linux重要目录1.Linux目录考古2.Linux重要目录详解 第2章 /etc下重要文件及目录1.网卡配置文件2.DNS解析配置文件3.本地DNS解析文件4.主机名配置文件5.设备开机自动挂载配置文件6.开机自启动配置文件7.系统环境变量配置文件8.软件启动脚本目录9.用户登陆系统后显示内容…

Mybatis Plus 集成 PgSQL 指南

“哲学家们只是用不同的方式解释世界&#xff0c;而问题在于改变世界。” ——卡尔马克思 (Karl Marx) 解读&#xff1a;马克思强调了实践的重要性&#xff0c;主张哲学不仅要理解世界&#xff0c;更要致力于改造世界。 本文我们引入 Mybatis Plus 作为 ORM &#xff0c;并且使…

TikTok Spark Ads火花广告是什么?如何设置?

TikTok的广告类型多样、功能各异&#xff0c;如果你需要投放精准度更高、效果更持久、更能吸引用户点击和参与的广告&#xff0c;那么Spark Ads会是一个相当不错的选择。 一、什么是TikTok Spark Ads 1.概念 Spark Ads是直接使用真实的自然流量视频及其功能来进行宣传的一种原…

【缓存与加速技术实践】Web缓存代理与CDN内容分发网络

文章目录 Web缓存代理Nginx配置缓存代理详细说明 CDN内容分发网络CDN的作用CDN的工作原理CDN内容的获取方式解决缓存集中过期的问题 Web缓存代理 作用&#xff1a; 缓存之前访问过的静态网页资源&#xff0c;以便在再次访问时能够直接从缓存代理服务器获取&#xff0c;减少源…

leetcode hot100【LeetCode 22.括号生成】java实现

LeetCode 22.括号生成 题目描述 给定一个整数 n&#xff0c;生成所有由 n 对括号组成的有效括号组合。 有效括号组合需满足如下条件&#xff1a; 左括号的数量必须等于右括号的数量。在任何前缀中&#xff0c;左括号的数量不能小于右括号的数量。 示例&#xff1a; 输入&a…

selenium大量并发连接驱动超时

我的业务是根据数据生成一大片报表图&#xff0c;组成一个word文档&#xff0c;量大概10~100之间&#xff0c;挨个执行太慢了&#xff0c;15分钟左右&#xff0c;为了加快速度使用了多线程&#xff0c;而多线程又被机器速度限制&#xff0c;一旦跑的多了&#xff0c;就会有线程…