数据分析师 ---- SQL强化(2)

news2025/1/22 9:05:31

数据分析师 ---- SQL强化(2)

文章目录

  • 数据分析师 ---- SQL强化(2)
    • 题目一:SQL实现文本处理
    • 题目二:语种播放量前三高所有歌曲
    • 总结:

题目一:SQL实现文本处理

现有试卷信息表examination_info(exam_id试卷ID, tag试卷类别, difficulty试卷难度, duration考试时长)
在这里插入图片描述
录题同学有一次手误将部分记录的试题类别tag、难度、时长同时录入到了tag字段,
请帮忙找出这些录错了的记录,并拆分后按正确的列类型输出。
由示例数据结果输出如下:
在这里插入图片描述
创建表

drop table if exists examination_info,exam_record;
CREATE TABLE examination_info (
    id int PRIMARY KEY AUTO_INCREMENT COMMENT '自增ID',
    exam_id int UNIQUE NOT NULL COMMENT '试卷ID',
    tag varchar(32) COMMENT '类别标签',
    difficulty varchar(8) COMMENT '难度',
    duration int NOT NULL COMMENT '时长',
    release_time datetime COMMENT '发布时间'
)CHARACTER SET utf8 COLLATE utf8_general_ci;
INSERT INTO examination_info(exam_id,tag,difficulty,duration,release_time) VALUES
  (9001, '算法', 'hard', 60, '2020-01-01 10:00:00'),
  (9002, '算法', 'hard', 80, '2020-01-01 10:00:00'),
  (9003, 'SQL', 'medium', 70, '2020-01-01 10:00:00'),
  (9004, '算法,medium,80','', 0, '2020-01-01 10:00:00');

题意分析:
通过题意我们能明白,题目主要让做的就是将数据填充错误的行进行分割字符串,让正确的数据放到对应的字段中

select  exam_id,
substring_index(tag,",",1) tag,
substring_index(substring_index(tag,",",-2),",",1) difficulty,
substring_index(tag,",",-1) duration
from examination_info
where difficulty=''

涉及知识点:
字符串拆分:substring_index(str, delim, count)

参数名解释
str需要拆分的字符串
delim分隔符,通过某字符进行拆分
count当 count 为正数,取第 n 个分隔符之前的所有字符; 当 count 为负数,取倒数第 n 个分隔符之后的所有字符。

可以嵌套使用

也可以使用regexp_substr函数使用正则表达式进行切分

题目二:语种播放量前三高所有歌曲

歌曲表:songplay
在这里插入图片描述
语种表:languageid
在这里插入图片描述
创建表:

drop table if exists  songplay;
create table `songplay`(
`id` int,
`playcnt` int,
`languageid` int
);
insert into songplay values(1,85001,1);
insert into songplay  values(2,80001,2);
insert into  songplay  values(3,60001,2);
insert into  songplay values(4,90001,1);
insert into  songplay values(5,69001,1);
insert into  songplay values(6,85001,1);
insert into  songplay values(7,70001,1);

drop table if exists language;
create table `language`(
`id` int,
`name` varchar(255)
);
insert into  language  values(1,'中文');
insert into  language values(2,'英文');

题意分析:
题目是要查询不同语种播放量前三高所有歌曲,当播放量一样的时候排名一样,所以这时候就需要考虑使用dense_rank函数先建立排名,最后在取排名每个排名为前3的歌曲。

DENSE_RANK()函数对序号进行并列排序,并且不会跳过重复的序号,比如序号为1、1、2

select language_name,songid,playcnt
from (
	select s.id songid,
	l.name language_name,s.playcnt,
	# 关键
	dense_rank() over(partition by name order by s.playcnt desc) rank_num
	from songplay s join language l
	on s.languageid = l.id
	# 排序
	order by l.id
) tmp
where rank_num<4

注意这个题目中隐层了一个要求,就是返回语种的顺序需要和语种表中出现的顺序一致,所以就需要order by l.id

关键代码解读:

dense_rank() over(partition by name order by s.playcnt desc) rank_num

使用窗口函数dense_rank() 不跳过序号排序,
partition by name 按照name进行分组
order by s.playcnt desc 按照 s.playcnt进行进行降序排序

总结:

这次两道SQL试题比较基础,题目一主要考察的是substring_index函数的应用,题目二考察的是窗口函数中dense_rank()over()的运用。

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

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

相关文章

钢铁侠材质制作——2、线条轮廓部分的制作

钢铁侠Unlit光照Shader&#xff0c;三种效果变化返回目录大家好&#xff0c;我是阿赵&#xff0c;这里是钢铁侠材质制作第二部分&#xff0c;线条轮廓部分的制作 为了实现这个效果&#xff0c;可以把细节拆分成以下几个部分&#xff1a; 1、轮廓光 1.效果分析 这是一个很基…

时间序列 | MATLAB实现CNN-BiLSTM-Attention时间序列预测

时间序列 | MATLAB实现CNN-BiLSTM-Attention时间序列预测 目录时间序列 | MATLAB实现CNN-BiLSTM-Attention时间序列预测预测效果基本介绍模型描述程序设计参考资料预测效果 基本介绍 MATLAB实现CNN-BiLSTM-Attention时间序列预测&#xff0c;CNN-BiLSTM结合注意力机制时间序列预…

语言模型ChatGPT,为什么能引领各行各业的AI技术革命

为什么ChatGPT这样一个语言模型的发展能引发所有行业的AI技术革命呢&#xff1f; 答案就在于它能理解我们的自然语言&#xff0c; 并能将我们的语言转换成计算机能够完全理解的特征。 自然语言与计算机理解 ChatGPT之所以能引领技术革命&#xff0c;关键在于它能理解我们的…

GPT、科技、人类的生产、知识与未来(上)

本文将继续结合GPT探讨人工智能技术升级可能对人类社会带来的影响。主要还是侧重历史、社会、文化、经济、政治等角度。 问题的提出&#xff1a;ChatGPT等工具会提高人的工作效率和产出。但它会让人类使用者自身变得更“聪明”&#xff0c;还是“更笨”&#xff1f;更“强”&am…

CVE-2017-16995 Ubuntu 16.04 漏洞复现

目录 1.背景介绍 2.目的&#xff1a; 3.环境 4.操作&#xff1a; 工具下载地址&#xff1a; 1.背景介绍 Ubuntu 16.04版本存在本地提权漏洞&#xff0c;该漏洞存在于Linux内核带有的eBPF bpf(2)系统调用中&#xff0c;当用户提供恶意BPF程序使eBPF验证器模块产生计算错误&…

JDBC03-批处理、连接池、DBUtils、事物、DAO通用方法

1. 封装 JDBCUtils 【关闭、得到连接】 1.1 说明 1.2 代码实现 工具类 JDBCUtils package com.hspedu.jdbc.utils;import java.io.FileInputStream; import java.io.IOException; import java.sql.*; import java.util.Properties; /** * 这是一个工具类&#xff0c;完成 my…

【Microsoft Edge】安装详解

文章目录一、下载 Edge1.1 下载网址1.2 版本分类二、安装 Edge2.1 可能的异常情况2.2 安装目录详解2.2.1 Edge 非 Canary 版2.2.2 Edge Canary 版一、下载 Edge Edge 的安装包其实是一个简易安装包&#xff0c;里面封装了一个安装的配置文件&#xff0c;提供真正的安装包下载链…

FreeRTOS 任务基础知识

文章目录一、什么是多任务系统&#xff1f;二、FreeRTOS 任务与协程三、任务状态四、任务优先级五、任务实现六、任务控制块七、任务堆栈RTOS 系统的核心就是任务管理&#xff0c;FreeRTOS 也不例外&#xff0c;而且大多数学习 RTOS 系统的工程师或者学生主要就是为了使用 RTOS…

Revit中怎么绘制多面坡度的屋顶及生成墙

​一、Revit中怎么绘制多面坡度的屋顶 像这种坡屋顶我们可以观察到&#xff0c;它的屋顶轮廓都是带有坡度的&#xff0c;那我可以通过添加定义坡度的方式来绘制出该屋顶。 点击建筑选项卡中的屋顶按钮&#xff0c;选择迹线屋顶。 选择使用拾取线工具&#xff0c;在选项栏中将偏…

从零学习SDK(4)使用SDK创建一个简单的应用程序

SDK&#xff08;Software Development Kit&#xff09;即软件开发工具包&#xff0c;是一组帮助我们开发出软件的工具&#xff0c;包括代码、文档、示例等。一般情况下&#xff0c;我们需要将SDK引入到我们的项目中才能使用它。比如&#xff0c;学Java的朋友最早接触的JDK&…

JMeter使用JDBC Request取样器 获取查询结果

JDBC获取查询结果Java脚本创建文件JSON字符串解析 数据库连接配置定义全局变量JDBC Request 创建文件路径以及文件的脚本 import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; boolean result false; try {//String message new Si…

JAVA初学下(仅做笔记)

一. Map集合&#xff08;双列集合&#xff09; 1.特点 键不能重复&#xff0c;值可以重复 Map接口位于最高层 2.常见API 2.1基本功能 ①注意V put&#xff08;K key,V value&#xff09;这个方法&#xff0c; 当加入 的键值对元素的键(key) 不存在时&#xff0c;就会将 键值…

django项目名称重命名

学会这个小白也能轻松修改项目名称;日常板砖中难免遇到项目多次利用的情况,修改项目名称也成了一门手艺😀;实际操作起来也非常简单,没有那些花花绿绿的东西. 一.项目奔跑 1.拿到项目后,我们先在pycharm运行下,看项目是否能正常奔跑起来; 注意收集正常奔跑后项目的执行环境等…

某程序员哀叹:月薪四五万,却每天极度焦虑痛苦,已有生理性不适,又不敢裸辞,怎么办?...

高薪能买来快乐吗&#xff1f;来看看这位程序员的哀叹&#xff1a;实在是扛不住了&#xff0c;每天都在极度焦虑和痛苦中度过&#xff0c;早上起来要挣扎着做心理建设去上班&#xff0c;已经产生生理性的头晕恶心食欲不振。有工作本身的原因&#xff0c;更多是自己心态的问题&a…

12纳米做出了7纳米的性能,为国产芯片打破美国限制指明道路

美国联合日本、荷兰等限制对中国供应先进芯片设备&#xff0c;试图借此阻止中国发展14纳米以下的先进工艺&#xff0c;然而日前中国一家芯片企业发布了一款全新的芯片&#xff0c;却给中国芯片行业指明了新道路&#xff0c;发展先进性能芯片又了可能性。龙芯近期发布了一款全新…

Flink 优化 (四) --------- 数据倾斜

目录一、判断是否存在数据倾斜二、数据倾斜的解决1. keyBy 后的聚合操作存在数据倾斜2. keyBy 之前发生数据倾斜3. keyBy 后的窗口聚合操作存在数据倾斜一、判断是否存在数据倾斜 相同 Task 的多个 Subtask 中&#xff0c;个别 Subtask 接收到的数据量明显大于其他Subtask 接收…

【DevOps】GitOps之痛 -不完美的GitOps

前言 在前两篇文章中&#xff0c;我们对GitOps进行了大致的介绍&#xff1a; 【DevOps】GitOps初识(上) - 让DevOps变得更好 【DevOps】GitOps初识(下) - 让DevOps变得更好 GitOps 作为软件发布实践方式&#xff0c;有着许多的优点&#xff0c;然而&#xff0c;世上并没有完美…

【Linux】Centos安装mvn命令(maven)

&#x1f341;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; 文章目录一、下载maven包方法一&#xff1a;官…

CTF流量分析

在CTF里&#xff0c;一些pcapng或pcap文件后缀的数据 不同的数据包有不同的协议&#xff0c;常见的有HTTP&#xff0c;TCP协议 Wireshark 简介 是一个网络封包分析软件。网络封包分析软件的功能是获取网络封包&#xff0c;并尽可能显示出最为详细的网络封包资料 使用WinPC…

舔狗日记:学姐生日快到了,使用Python把她的照片做成视频当礼物

舔狗日记1前言一、需要调入的模块二、实现合并多张图片转成 mp4 视频三、优化改进一下总结前言 这不是学姐生日快到了&#xff0c;于是我学了一手使用Python来把学姐的照片生成为视频&#xff0c;到时候给她一个惊喜&#xff01; 好了先不舔了&#xff0c;下面分享一下用pytho…