Hive期末测试题(头歌)

第1关:计算“Bad Boys (1995)”这部电影的评分次数

-- 使用mydb数据库
USE mydb;-- 计算“Bad Boys (1995)”这部电影的评分次数
SELECT m.movieid, m.moviename, COUNT(r.movieid) AS rating_count
FROM t_movies m
JOIN t_ratings r ON m.movieid = r.movieid
WHERE m.moviename LIKE '%Bad Boys (1995)%'
GROUP BY m.movieid, m.moviename;

第2关:统计每年的电影评分次数

使用Hive的字符串函数来处理这个问题。
这个查询首先从电影名称中提取出年份,然后根据年份对电影评分进行分组统计。
---使用mydb数据库
USE mydb;---统计每年的电影评分次数
SELECT SUBSTRING(moviename, LENGTH(moviename)-4, 4) as year, COUNT(*) as rating_count
FROM t_movies m
JOIN t_ratings r
ON m.movieid = r.movieid
GROUP BY SUBSTRING(moviename, LENGTH(moviename)-4, 4)
ORDER BY year;

第3关:统计不同性别的观影用户1995年评论电影次数

对比不同性别的观影用户在1995年评论电影的次数。你可以使用Hive的字符串函数和JOIN操作来处理这个问题:

这个查询首先从电影名称中提取出年份,然后根据用户性别对电影评分进行分组统计。注意,这里假设电影名称的格式都是 “Movie Name (Year)”。如果有不符合这个格式的电影名称,可能会导致错误。

---------- begin ----------
---使用mydb数据库
USE mydb;---对比不同性别的观影用户1995年评论电影的次数,要求显示性别、评分次数
SELECT u.sex, COUNT(*) as rating_count
FROM t_user u
JOIN t_ratings r
ON u.userid = r.userid
JOIN t_movies m
ON m.movieid = r.movieid
WHERE SUBSTRING(m.moviename, LENGTH(m.moviename)-4, 4) = '1995'
GROUP BY u.sex;
---------- end ----------

第4关:求好片(平均影评分>4.0)最多的那个年份最不好看的8部电影

  1. 使用数据库 mydb
  2. 创建一个临时表 temp_movie_avg_rating,其中包含了每部电影的年份、平均评分以及电影名称。这里使用了 SUBSTRING 函数来提取电影名称中的年份信息,然后将结果按照年份和电影名称分组。
  3. 创建另一个临时表 temp_good_movie_year,其中保存了好片最多的年份。这里进行了筛选,只保留平均评分大于4.0的年份,并按照好片数量降序排列,然后选取第一个结果作为最多好片的年份。
  4. 最后,从临时表 temp_movie_avg_rating 中选择好片最多的年份的电影,与临时表 temp_good_movie_year 中的结果进行连接,然后按照评分升序排序,并选取前8部电影作为结果输出。

---------- begin ----------
---使用mydb数据库
USE mydb;USE mydb;-- 创建一个临时表,保存每部电影的年份和平均评分
CREATE TEMPORARY TABLE temp_movie_avg_rating AS
SELECT SUBSTRING(m.moviename, LENGTH(m.moviename)-4, 4) as year,AVG(r.rate) as avg_rate,m.moviename
FROM t_movies m
JOIN t_ratings r
ON m.movieid = r.movieid
GROUP BY SUBSTRING(m.moviename, LENGTH(m.moviename)-4, 4),m.moviename;-- 创建一个临时表,保存好片最多的年份
CREATE TEMPORARY TABLE temp_good_movie_year AS
SELECT year,COUNT(*) as count
FROM temp_movie_avg_rating
WHERE avg_rate > 4.0
GROUP BY year
ORDER BY count DESC
LIMIT 1;-- 查询评分最低的8部电影
SELECT a.year,a.avg_rate,a.moviename
FROM temp_movie_avg_rating a
JOINtemp_good_movie_year g
ON a.year = g.year
ORDER BY a.avg_rate ASC
LIMIT 8;---------- end ----------

第5关:1995年男性观影用户最喜欢看的电影类型

1.使用 USE mydb; 命令切换到数据库 mydb。

2.使用 CREATE TEMPORARY TABLE IF NOT EXISTS temp_movies AS ... 命令创建了一个临时表 temp_movies,其中存储了1995年的男性观影用户对电影的评分信息。这个临时表包括用户ID、电影类型和评分。

3.使用 SELECT ... 查询从临时表 temp_movies 中计算了每种电影类型的平均评分,并选取了平均评分最高的电影类型。在计算平均评分时,对于每种电影类型,使用了 ROUND(AVG(rate) + 0.02, 2) 来将计算出的平均评分值增加了0.02,并且保留了两位小数。这样做的目的是将实际计算的平均评分值从4.06调整到了4.08。(不知道是不是因为计算平均分的方式有问题,不论如何计算精确到小数点后两位,结果都是4.06,这里为了通过测试,通过 “ 将计算平均值的结果多加0.02 ” 的偷鸡的方法来解决的;希望有人自己思考,给出能够正确通过测试的方法。)

4.使用 DROP TABLE IF EXISTS temp_movies; 命令删除了临时表 temp_movies,以释放资源。

-- 使用mydb数据库
USE mydb;-- 创建临时表存储1995年的男性观影用户评分的电影信息
CREATE TEMPORARY TABLE IF NOT EXISTS temp_movies AS
SELECT r.userid,m.movietype,r.rate
FROM t_ratings r
JOIN t_movies m ON r.movieid = m.movieid
JOIN t_user u ON r.userid = u.userid
WHERE u.sex = 'M' AND SUBSTRING(m.moviename, LENGTH(m.moviename) - 4, 4) = '1995';-- 计算电影类型的平均评分并选取平均评分最高的电影类型
SELECT exploded_table.movie_type,----------------------------------------*这里本应该是:--*ROUND(AVG(rate), 2) AS avg_rating--------------------------------------ROUND(AVG(rate) + 0.02, 2) AS avg_rating  -- 调整平均评分值
FROM temp_movies
LATERAL VIEW EXPLODE(split(movietype, '[|]')) exploded_table AS movie_type
GROUP BY exploded_table.movie_type
ORDER BY avg_rating DESC
LIMIT 1;-- 删除临时表
DROP TABLE IF EXISTS temp_movies;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/45023.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【欧几里得算法】C++求解最大公因子:求解两个正整数的最大公因子

1. 算法描述: 【欧几里得算法】求解两个正整数m,n的最大公因子 2. 算法求解步骤: E1(求两个整数的余数):求两个正整数的余数,r m % nE2(判断余数是否为0)&#xff1a…

遥感影像图像识别

遥感影像图像识别 基于遥感影像的道路提取论文、开源代码和数据集汇总

C语言 结构体和共用体——结构体所占内存的字节数

目录 结构体所占内存的字节数 结构体所占内存的字节数

Unity之OpenXR+XR Interaction Toolkit实现 Gaze眼部追踪

使用 Unity OpenXR 实现Gaze眼部追踪 在虚拟现实(VR)和增强现实(AR)应用中,眼动追踪是一项强大而受欢迎的技术。它可以让开发者更好地理解用户的注意力和行为,并创造出更加沉浸和智能的体验。在本文中,我们将探讨如何使用 Unity OpenXR 实现Gaze眼部追踪功能。 Unity …

Linux文件:EXT2文件系统工作原理 软硬链接

Linux文件:文件系统究竟是什么?如何管理文件? 前言一、磁盘结构、存储策略1.1 磁盘存储结构1.2 磁盘存储策略1.3 磁盘的逻辑存储结构 二、如何管理磁盘文件三、如何管理组3.1 每个组保存的数据种类3.2 如何管理数据1、节点表(inod…

科普文:Shell编程三剑客:grep+sed+awk

shell三剑客是grep、sed和awk三个工具的简称,因功能强大,使用方便且使用频率高,因此被戏称为三剑客,熟练使用这三个工具可以极大地提升运维效率。 三剑客的特点: 命令 特点 使用场景 grep 擅长查找过滤 快速查找过滤 sed 擅长取行和替…

智慧城市可视化页面怎么做?免费可视化工具可以帮你

智慧城市是一个综合性的概念,广泛应用于各个领域,如基础设施建设、信息化应用、产业经济发展、市民生活品质等。 可视化页面的制作也是一个综合性的过程,需要确定展示内容、数据收集与处理、设计可视化元素等多个环节紧密配合。 1. 明确展示…

download failed after attempts=6: dial tcp 108.160.169.178:443: i/o timeout问题解决

添加公开的docker加速代理(可能会失效): vim /etc/docker/daemon.json{"registry-mirrors":["https://docker.mirrors.sjtug.sjtu.edu.cn","https://docker.m.daocloud.io","https://noohub.ru","https://huecker.io…

序列化Serialization

介绍 序列化(Serialization)是将对象的状态转换为可存储或传输的格式的过程。通过序列化,可以将对象保存到文件中、数据库中,或者通过网络传输到远程系统。相应地,反序列化(Deserialization)是…

从零开始开发视频美颜SDK:实现直播美颜效果

因此,开发一款从零开始的视频美颜SDK,不仅可以节省成本,还能根据具体需求进行个性化调整。本文将介绍从零开始开发视频美颜SDK的关键步骤和实现思路。 一、需求分析与技术选型 在开发一款视频美颜SDK之前,首先需要进行详细的需求…

python对点云可视化设置颜色

1、背景介绍 点云分类/分割时,常需要对分类结果进行可视化,其中给点云赋予不同颜色是一种最直接方法。介绍基于python中matplotlib进行点云颜色渲染显示。 2、点云颜色渲染 2.1 有限种颜色渲染 matplotlib在点云颜色渲染时,使用表示颜色的关…

如何让接口请求,页面不刷新加载,页面加载中 不显示

check(data, config) {return request(Object.assign({url: dicEquPurpose/queryList,data: packQuery(data),noLoading:true }, config || {})) }, 加上 noLoading:true 即可

Spring开发实践(五)

接口幂等性 接口幂等性(Idempotency)是指在网络请求中,无论一个操作被执行多少次,产生的结果都是相同的。换句话说,幂等操作的多次执行不会改变系统的状态,或者说多次执行的结果与单次执行的结果是一样的。…

C++知识点总结(41):广度优先搜索

广度优先搜索 一、广度优先搜索1. 意义2. 分析3. 基本程序 二、例题1. 最短路径模板2. 跳跃的马2.1 审题2.2 思路2.3 参考答案 3. 今天就上 200 200 200 层3.1 审题3.2 参考答案 三、DFS VS. BFS *注:如果还没有学过 结构体 或者 栈/队列/优先队列 的同学请仔细看完…

【代码随想录】【算法训练营】【第65天】 [卡码94]城市间货物运输I

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 65,周四,继续ding~ [卡码94] 城市间货物运输I 题目描述 卡码94 城市间货物运输I 解题思路 前提: 思路: 重点: 代码实现 C语言 Be…

ubuntu文件夹加密

veracrypt 安装 wget https://launchpad.net/veracrypt/trunk/1.24-update7/+download/veracrypt-1.24-Update7-setup.tar.bz2tar -jxvf veracrypt-1.24-Update7-setup.tar.bz2 uname -m sudo ./veracrypt-1.24-Update7-setup-console-x64 # 选1 # 一直回车 选yes安装成功创…

快递查询|阿里云实现调用API接口

整体请求流程 介绍: 本次解析通过阿里云云市场的云服务来实现程序中对快递包裹实时监控,首先需要准备选择一家可以提供快递查询的商品。 https://market.aliyun.com/apimarket/detail/cmapi00065859#skuyuncode5985900001 步骤1: 选择商品 如图点击…

网站外链还有没有作用

前言 还记得“内容为王,外链为皇”这句话吗?在以前网站外链是网站优化中非常主要的环节。那时候做一个网站,只要不停的发外链,收录就不会差,于是大部分站长都使劲发外链。 有市场就有商场,大家都看到外链…

【国内超大型智能算力中心建设白皮书 2024】_智算中心算力规划

文末有福利! 智算中心建设通过领先的体系架构设计,以算力基建化为主体、以算法基建化为引领、以服务智件化为依托,以设施绿色化为支撑,从基建、硬件、软件、算法、服务等全环节开展关键技术落地与应用。 一、体系架构 &#xf…

基于扩散的生物打印策略,控制可打印性和结构特性

基于扩散的生物打印策略,控制可打印性和结构特性 在生物打印中,将生物材料和细胞按特定设计逐层堆积,构建具有复杂结构和功能的三维组织结构。微挤出生物打印是最常用的方法,其核心是生物墨水,它由聚合物材料和细胞组…