牛客网SQL训练2—SQL基础进阶

news2024/11/17 22:37:08

文章目录

  • 一、基本查询
  • 二、数据过滤
  • 三:函数
  • 四:分组聚合
  • 五:子查询
  • 六:多表连接
  • 七:组合查询
  • 八:技能专项-case when使用
  • 九:多表连接-窗口函数
  • 十:技能专项-having子句
  • 十一:技能专项-一网打尽时间函数
  • 十二:技能专项-一网打尽字符函数


一、基本查询

题目1:查询所有投递用户user id并去重】
在这里插入图片描述

select 
	user_id
from deliver_record
group by user_id
;

在这里插入图片描述


题目2:查询限制行数】
在这里插入图片描述

select 
	user_id
	,job_id
	,device
	,job_salary
	,deliver_date
from deliver_record
limit 2
;

在这里插入图片描述

题目3:将查询列重新命名】
在这里插入图片描述

select 
	job_salary '职位工资'
from deliver_record
;

在这里插入图片描述

题目4:查询表总行数】
在这里插入图片描述

select 
	count(*) cnt
from deliver_record
;

在这里插入图片描述

二、数据过滤

题目1:查询在pc上投递的所有投递记录】
在这里插入图片描述

select * from deliver_record_detail
where device='pc'
;

在这里插入图片描述

题目2:查询投递最低最高薪资差别大于2的职位的投递用户】
在这里插入图片描述

select 
	user_id
from deliver_record_detail
where (max_salary-min_salary)>2
;

在这里插入图片描述

题目3**:查询薪资信息不为空的职位投递记录】
在这里插入图片描述

select * from deliver_record_detail
where min_salary is not null or max_salary is not null
;

在这里插入图片描述

题目4:查询城市为北京的职位投递记录】
在这里插入图片描述

select * from deliver_record_detail
where job_city like '北京%'
;

在这里插入图片描述

三:函数

题目1:计算总刷题数,并将所选列名改为总刷题数】
在这里插入图片描述

select
	sum(pass_count) '总刷题数'
from questions_pass_record_detail
;

在这里插入图片描述


题目2:计算刷题总人数】
在这里插入图片描述

select
	count(distinct user_id) cnt
from questions_pass_record_detail
;

在这里插入图片描述

题目3:找出sql类题目的单次最大刷题数】
在这里插入图片描述

select 
	max(pass_count) maxCnt
from questions_pass_record_detail
where question_type='sql'
;

在这里插入图片描述

题目4:计算单次平均刷题数】
在这里插入图片描述

select 
	avg(pass_count) avgCnt
from questions_pass_record_detail
;

在这里插入图片描述

四:分组聚合

题目1:统计每天总刷题数】
在这里插入图片描述

select 
	date days 
	,sum(pass_count) passCnt
from questions_pass_record_detail
group by date 
;

在这里插入图片描述


题目2:统计每天刷题数超过5的user id以及刷题数】
在这里插入图片描述

select 
	date 
	,user_id
	,sum(pass_count) total_pass_count
from questions_pass_record_detail
where pass_count>5
group by date,user_id
;

在这里插入图片描述

题目3:统计不同类型题目的刷题数,并按刷题数进行升序排列】
在这里插入图片描述

select 
	question_type
	,sum(pass_count) passCnt
from questions_pass_record_detail
group by question_type
order by passCnt
;

在这里插入图片描述

五:子查询

题目1:查询2022年毕业用户的刷题记录】
在这里插入图片描述

select 
	user_id
	,question_type
	,device
	,pass_count
	,date
from questions_pass_record
where user_id in (
					select 
						user_id
					from user_info
					where graduation_year='2022'
				 )
;

在这里插入图片描述

题目2:查询2022年以来刷题用户的用user id和毕业院校】
在这里插入图片描述

select 
	user_id
	,university
from user_info
where user_id in (
					select 
						user_id
					from questions_pass_record
					where substr(date,1,4)>='2022'
					group by user_id
				  )
;

在这里插入图片描述

六:多表连接

题目1:查询被投递过的职位信息(答案有问题)】
在这里插入图片描述

# 能过的答案
select * from job_info;
 
# 根据题意解
select 
	a.company_id
	,count(distinct b.user_id) cnt
from (
		select 
			job_id
			,company_id
		from job_info
) a join (
			select 
				user_id
				,job_id
				,resume_if_checked
			from deliver_record
			where resume_if_checked='1'
) b on a.job_id=b.job_id
group by a.company_id
order by company_id 
;

在这里插入图片描述


题目2:查询每个公司查看过的投递用户数】
在这里插入图片描述

select 
	a.company_id
	,count(distinct b.user_id) cnt
from (
		select 
			job_id
			,company_id
		from job_info
) a join (
			select 
				user_id
				,job_id
				,resume_if_checked
			from deliver_record
			where resume_if_checked='1'
) b on a.job_id=b.job_id
group by a.company_id
;

在这里插入图片描述


七:组合查询

题目1:查询职位城市在北京或者职位工资高于100000的job_id和company_id】
在这里插入图片描述

select 
	job_id
	,company_id
from job_info
where job_city='北京'
union all
select 
	job_id
	,company_id
from job_info
where salary>100000
;

在这里插入图片描述


题目2:查询职位发布时间在2021年后或职位城市为上海的job_id, boss_id, company_id】
在这里插入图片描述

select 
	job_id
	,boss_id
	,company_id
from (
		select 
			job_id
			,boss_id
			,company_id
			,job_city
		from job_info
		where substr(post_time,1,4)>='2021'
		union 
		select 
			job_id
			,boss_id
			,company_id
			,job_city
		from job_info
		where job_city='上海'		
) a
order by job_city
;

在这里插入图片描述

八:技能专项-case when使用

题目1:判断其是否有过购买记录】
在这里插入图片描述

select 
	customer_id
	,if(latest_place_order_date is not null,1,0) if_placed_order
from customers_info
;

在这里插入图片描述

题目2:请按城市对客户进行排序,如果城市为空,则按国家排序】
在这里插入图片描述

select 
	customer_id
	,gender
	,city
	,country
	,age
	,latest_place_order_date
from customers_info
order by city,country
;

在这里插入图片描述

题目3:分群并计算群体人数】
在这里插入图片描述

select 
	age_group
	,count(customer_id)  user_count
from (
		select 
			case when age<20 then '20以下' 
			     when age between 20 and 50 then '20-50'
			     when age>50 then '50以上' 
			     when age is null then '未填写'
			     else '其他' end age_group
			,customer_id
		from customers_info
) a
group by age_group
;

在这里插入图片描述

九:多表连接-窗口函数

题目1:查询每天刷题通过数最多的前二名用户id和刷题数】
在这里插入图片描述

select 
	date
	,user_id
	,pass_count
from (
		select 
			date
			,user_id
			,pass_count
			,row_number() over(partition by date order by pass_count desc) rn
		from questions_pass_record
) a
where rn<=2
order by date
;

在这里插入图片描述


题目2:查询用户刷题日期和下一次刷题日期】
在这里插入图片描述

select 
	user_id
	,date
	,lead(date,1,'None') over(partition by user_id order by date) nextdate
from questions_pass_record
order by user_id,date
;

在这里插入图片描述

十:技能专项-having子句

题目1:输出提交次数大于2次的用户ID且倒序排列】
在这里插入图片描述

select
	user_id
from done_questions_record
group by user_id
having count(1)>2
order by user_id desc
;

在这里插入图片描述

题目2:输出提交且通过次数大于2 的用户ID且升序排列】
在这里插入图片描述

select
	user_id
from done_questions_record
where result_info='1'
group by user_id
having count(1)>2
;

在这里插入图片描述


题目3**:验证刷题效果,输出题目真实通过率】
在这里插入图片描述
question_pass_rate:题目通过率=通过题目总数(去重)/总题目数(去重)
pass_rate:提交通过正确率=通过题目总数(不去重)/提交次数(不去重)
question_per_cnt:每题目平均提交次数=总提交次数(不去重)/总题目数(去重)

select 
	user_id
	,count(distinct if(result_info=1,question_id,null))/count(distinct question_id) question_pass_rate
	,sum(result_info)/count(done_time) pass_rate
	,count(done_time)/count(distinct question_id) question_per_cnt
from done_questions_record
group by user_id 
having question_pass_rate>0.6
order by user_id
;

在这里插入图片描述

十一:技能专项-一网打尽时间函数

题目1**:广告点击的高峰期】
在这里插入图片描述

select 
	click_hour
	,click_cnt
from(
		select 
			hour(click_time) click_hour
			,count(trace_id) click_cnt
			,row_number() over(order by count(trace_id) desc) rn 
		from user_ad_click_time
		group by hour(click_time)
) a 
where rn=1
;

在这里插入图片描述


题目2**:输出在5min内完成点击购买的用户ID】
在这里插入图片描述

select  
	a.user_id  uid
from user_ad_click_time a
left join user_payment_time b 
on a.user_id=b.user_id and a.trace_id=b.trace_id
where timestampdiff(minute,click_time,pay_time)<=5
order by a.user_id desc
;

在这里插入图片描述

十二:技能专项-一网打尽字符函数

题目1:字符函数正则匹配1(答案有问题)】
在这里插入图片描述

# 能过的答案
select 
	id
	,comment
from comment_detail
where comment like '%是%' or (comment like '%试%')
order by id
;

# 根据题意解
select 
	id
	,comment
from comment_detail
where comment like '是%' or comment like '求%'
order by id
;

在这里插入图片描述


题目2:字符函数正则匹配2】
在这里插入图片描述

select 
	id
	,comment
from comment_detail
where comment like '是%' or comment like '求%'
;

在这里插入图片描述

题目3:话题的分布情况】
在这里插入图片描述

select 
	substring_index(subject_set,',',1) subject_id1
	,count(1) cnt
from comment_detail
where substring_index(substring_index(subject_set,',',2),',',-1)='1002'
group by substring_index(subject_set,',',1)
order by subject_id1
;

在这里插入图片描述

题目4**:评论替换和去除】
在这里插入图片描述

select 
	id
	,replace(comment,',','') comment
from comment_detail
where length(replace(comment,',',''))>3

由于题目说的是汉字长度大于3,所以这里就要使用char_length()而不是length();
char_length():单位为字符,不管汉字还是数字或者是字母都算是一个字符。
length(): 单位是字节,utf8编码下,一个汉字三个字节,一个数字或字母一个字节。gbk编码下,一个汉字两个字节,一个数字或字母一个字节。

在这里插入图片描述

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

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

相关文章

vue 使用 Echarts做地图及飞线效果

前言&#xff1a; 效果图 一. 项目中安装以及引入Echarts 1.1 npm 命令安装echarts库 npm install echarts --save 1.2 yarn命令安装echarts库 yarn add echarts 1.3 引用 a. 在使用页面上引入 在Vue组件的script标签中引入echarts库 使用 echarts import * as echarts f…

flowable之三 启动一个流程并跟踪

1. 背景介绍 当我们部署一个流程并启动后&#xff0c;Flowable会按照既定流程定义及进行节点处理以及自动流转&#xff0c;从一个节点执行到下一个节点&#xff0c;直至结束。在此过程中&#xff0c;系统如何处理BPMN XML文件&#xff1f;节点如何进行流转&#xff1f;本文对f…

衡兰芷若成绝响,人间不见周海媚(4k修复基于PaddleGan)

一代人有一代人的经典回忆&#xff0c;1994年由周海媚、马景涛、叶童主演的《神雕侠侣》曾经风靡一时&#xff0c;周海媚所诠释的周芷若凝聚了汉水之钟灵&#xff0c;峨嵋之毓秀&#xff0c;遇雪尤清&#xff0c;经霜更艳&#xff0c;俘获万千观众&#xff0c;成为了一代人的共…

柔性数组(结构体成员)

目录 前言&#xff1a; 柔性数组&#xff1a; 给柔性数组分配空间&#xff1a; 调整柔性数组大小&#xff1a; 柔性数组的好处&#xff1a; 前言&#xff1a; 柔性数组&#xff1f;可能你从未听说&#xff0c;但是确实有这个概念。听名字&#xff0c;好像就是柔软的数…

鸿蒙小车之多任务调度实验

说到鸿蒙我们都会想到华为mate60&#xff1a;遥遥领先&#xff01;我们一直领先&#xff01; 我们这个小车也是采用的是鸿蒙操作系统&#xff0c;学习鸿蒙小车&#xff0c;让你遥遥领先于你的同学。 文章目录 前言一、什么是任务&#xff1f;为什么要有任务二、任务的状态三、任…

Axure自定义元件

目录 1.processOne的使用 ​编辑2.自定义元件的使用、 2.1如何自定义一个元件 2.2使用自定义元件 导语&#xff1a; Axure是绘制原型图的软件&#xff0c;但是我们很多时候不知道&#xff0c;画哪一个板块&#xff0c;所以流程图的绘制也是非常重要的 1.processOne的使用…

一些好用的VSCode扩展

可以在扩展这里直接搜索需要的扩展&#xff0c;点击安装即可。 1.Chinese 中文扩展&#xff0c;就是说虽然咱们懂点英语&#xff0c;但还是中文看着方便 2.Auto Rename Tag 当你重命名一个HTML 标签时&#xff0c;会自动重命名与他配对的HTML 标签 当你选择h4这个标签时&…

如何解决Windows 11黑屏的问题,让电脑“重见光明”

本页介绍了经过测试并证明有效的常见Windows 11黑屏故障的所有修复程序。 本页上的提示和解决方案适用于所有Windows 11设备,从台式电脑和笔记本电脑到微软的Surface二合一设备。 是什么导致Windows 11黑屏死机 在使用Windows 11时,显示器或屏幕明显关闭,通常被称为Window…

YOLOv8 图片目标计数 | 特定目标进行计数

全类别计数特定类别计数如何使用 YOLOv8 进行对象计数 有很多同学留言说想学 YOLOv8 目标计数。那么今天这篇博客,我将教大家如何使用 YOLOv8 进行对象计数。YOLOv8 是一种非常强大的对象检测模型,它可以识别图像中的各种对象。我们将学习如何利用这个模型对特定对象进行计数…

【日常笔记】notepad++ 正则表达式基本用法

一、场景 二、正则表达式--语法 2.1、学习基本的匹配字符&#xff1a; 2.2、学习特殊字符和量词&#xff1a; 2.3、学习转义字符 2.4、学习分组和捕获 2.5、区分大小写 和 匹配整个单词 2.6、引用分组 三、实战 ▶ 希望把课程目录中 -- 前面的都去掉 一、场景 希望把…

如何使用ArcGIS Pro裁剪影像

对影像进行裁剪是一项比较常规的操作&#xff0c;因为到手的影像可能是多种范围&#xff0c;需要根据自己需求进行裁剪&#xff0c;这里为大家介绍一下ArcGIS Pro中裁剪的方法&#xff0c;希望能对你有所帮助。 数据来源 本教程所使用的数据是从水经微图中下载的影像和行政区…

Java EE 多线程之 JUC

文章目录 1. Callable 接口2. ReentrantLock3. 信号量4. CountDownLatch JUC这里就是指&#xff08;java.util.concurrent&#xff09; concurrent 就是并发的意思 这个包里的内容&#xff0c;主要就是一些多线程相关的组件 1. Callable 接口 Callable 也是一种创建线程的方式…

Go 与 Rust:现代编程语言的深度对比

在快速发展的软件开发领域中&#xff0c;选择合适的编程语言对项目的成功至关重要。Go 和 Rust 是两种现代编程语言&#xff0c;它们都各自拥有一系列独特的特性和优势。本文旨在深入比较 Go 和 Rust&#xff0c;从不同的角度分析这两种语言&#xff0c;包括性能、语言特性、生…

你好!赫夫曼树【JAVA】

目录 1.简单介绍 2.术语 3.构建思路 4.创建节点类 5.创建赫夫曼树 6.前序遍历 7.小玩一把 1.简单介绍 赫夫曼树&#xff08;Huffman Tree&#xff09;又称最优二叉树&#xff0c;是一种带权路径长度最短的二叉树。它的构建主要用于数据压缩算法中&#xff0c;根据字…

【vue】jenkins打前端包时报错:第 8 行:cd: dist: 没有那个文件或目录

问题描述 jenkins打前端包时报错&#xff1a;第 8 行&#x1f4bf; dist: 没有那个文件或目录 Jenkins中 “Execute shell” 配置的脚本&#xff1a; echo $PATH node -v npm -v npm config set registry http://ued.edtsoft.com/ npm install npm run build:prod cd dist rm…

数据结构(七):树介绍及面试常考算法

一、树介绍 1、定义 树形结构是一种层级式的数据结构&#xff0c;由顶点&#xff08;节点&#xff09;和连接它们的边组成。 树类似于图&#xff0c;但区分树和图的重要特征是树中不存在环路。树有以下特点&#xff1a; &#xff08;1&#xff09;每个节点有零个或多个子节点…

牛客网BC100有序序列合并

思路&#xff1a; 运用归并排序&#xff1a; 假设给定我们两个都是升序的数组&#xff0c;要求我们要把这两个数组以升序的方式合并到一个数组中&#xff0c;则我们就可以在这两个数组中分别各拿取一个元素进行比较&#xff0c;将二者之间较小值先放在这个新数组中&#xff0c…

函数图形渐近线分析

文章目录 曲线的渐近线水平和垂直渐近线斜渐近线斜渐近线公式推导简便方法确定斜渐近线(一次多项式化方法) 例 曲线的渐近线 渐近线综合了极限和函数图形的知识,尤其是斜渐近线 水平和垂直渐近线 若点 M M M沿曲线 y f ( x ) yf(x) yf(x)无限远离原点时,它于某条直线 L L L之…

web应用开发技术的一些概念

一、Servlet 1.Servlet的工作过程&#xff1a; Servelt的工作流程示意图 &#xff08;1&#xff09;客户端发起一个Http请求到服务器&#xff0c;请求特定的资源或者是要执行特定的操作 &#xff08;2&#xff09;服务器在接收到请求后&#xff0c;根据请求相应的URL将请求分发…

2023.12.15 FineBI与kettle

1.结构化就是可以用schema描述的数据,就是结构化数据,能转为二维表格, 如CSV,Excel, 2.半结构化就是部分可以转换为二维表格,如JSON,XML 3.非结构化数据,就是完全无法用二维表格表示的数据,如Word文档,Mp4,图片,等文件. kettle的流程 新建转换-构建流图-配置组件-保存运行 使…