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

文章目录

  • 一、基本查询
  • 二、数据过滤
  • 三:函数
  • 四:分组聚合
  • 五:子查询
  • 六:多表连接
  • 七:组合查询
  • 八:技能专项-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编码下,一个汉字两个字节,一个数字或字母一个字节。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

桂电|《操作系统》实验一:UNIX/LINUX及其使用环境(实验报告)

桂林电子科技大学2023-2024学年 第 一 学期 操作系统A 实验报告 实验名称 实验一 UNIX/LINUX及其使用环境 实验指导老师&#xff1a; 成绩 院 系 计算机与信息安全学院 专业 计算机科学与技术(卓越工程) 学 号 姓名 课内序…

保姆级 Keras 实现 YOLO v3 三

保姆级 Keras 实现 YOLO v3 三 一. 分配 anchor box二. 正负样本匹配规则三. 为每一个 anchor box 打标签3.1 anchor box 长什么样?3.2 每一个 anchor box 标签需要填充的信息有哪些?3.3 ( Δ x , Δ y , Δ w , Δ h ) (\Delta x, \Delta y, \Delta w, \Delta h) (Δx,Δy,…

uniapp交互反馈api的使用示例

官方文档链接&#xff1a;uni.showToast(OBJECT) | uni-app官网 1.uni.showToast({}) 显示消息提示框。 常用属性&#xff1a; title:页面提示的内容 image&#xff1a;改变提示框默认的icon图标 duration&#xff1a;提示框在页面显示多少秒才让它消失 添加了image属性后。 注…

vs code 设置了自动格式化保存 但是json 配置文件不想自动格式化

vscode 点击文件>首选项>设置>点击打开设置 >转化成文本格式 "editor.formatOnSave": true, "[json]": { "editor.formatOnSave": false }, 即可

智安网络|计算机视觉在城市交通中的前景与变化

随着科技的不断发展&#xff0c;计算机视觉技术在各个领域扮演着越来越重要的角色。在交通领域&#xff0c;计算机视觉为智能交通系统带来了许多机遇&#xff0c;为城市交通管理和出行体验提供了前所未有的可能性。 首先&#xff0c;计算机视觉技术可以用于智能交通监控。传统…

力扣题:数字与字符串间转换-12.15

力扣题-12.15 [力扣刷题攻略] Re&#xff1a;从零开始的力扣刷题生活 力扣题1&#xff1a;592. 分数加减运算 解题思想&#xff1a;首先通过对表达式进行分离&#xff0c;然后利用分数的加法原则进行计算&#xff0c;最后除以最大公因数即可 class Solution(object):def fra…

【MATLAB】数据拟合第10期-二阶多项式的局部加权回归拟合算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 二阶多项式局部加权回归拟合算法是一种用于回归分析的方法&#xff0c;主要通过局部加权线性回归模型来实现。以下是对二阶多项式局部加权回归拟合算法的介绍&#xff1a; 局部加权线性回…

微信小程序 实现上传图片前裁剪功能

前言 技术支持&#xff1a; wx-cropper 裁剪 总体思路是&#xff1a;安装完wx-cropper之后就它当成组件使用。在使用页面的地方引入组件就行。上传图片的逻辑不变&#xff0c;在 通过wx.chooseMedia() Api 拿到图片之后传递给子组件&#xff0c;子组件在拿到图片进行裁剪处理等…

ChatGPT如何做科研??

2023年我们进入了AI2.0时代。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚于互联网和个人电脑的问世。360创始人周鸿祎认为未来各行各业如果不能搭上这班车&#xff0c;就有可能被淘汰在这个数字化时代&#xff0c;如何能高效地处理文本、文献查阅、PPT…

算法:单链表反转

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、问题描述 二、栈解法Stack 三、三指针法 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、问题描述 有个单链表&#xff0c;现…

Gitlab基础篇: Gitlab docker 安装部署、Gitlab 设置账号密码

文章目录 1、环境准备2、配置1)、初始化2)、修改gitlab配置文件3)、修改docker配置的gitlab默认端口 gitlab进阶配置gitlab 设置账号密码 1、环境准备 安装docker gitlab前确保docker环境&#xff0c;如果没有搭建docker请查阅“Linux docker 安装文档” docker 下载 gitlab容…

阿里云SLS日志服务之数据导入与加工处理

一、背景 采集vm虚拟机上的Log日志文本&#xff0c;如果需要经过特殊的加工处理&#xff0c;在本文主要讲述如何在SLS把kafka采集上来的数据经导入并加工后存储。 二、数据流转图 三、数据导入 服务地址&#xff1a;填写kafka集群的地址数据格式&#xff1a;json字符串&#…

libevent服务GET/POST的简单使用

目录 1、前言2、测试demo2.1、目录结构2.2、 测试源码2.2.1、http_server.cpp2.2.2、 http_server.h 2.3、 编译2.4、 运行结果2.4.1、测试POST2.4.2 、测试GET请求 1、前言 项目开发中经常需要使用到私有协议和Qt,Android等GUI前端通信&#xff0c;比较常用的使用POST和GET方式…

《算法通关村——透彻理解动态规划》

《算法通关村——透彻理解动态规划》 62. 不同路径 一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff…

Matlab示例-Examine 16-QAM Using MATLAB学习笔记

​工作之余学习16-QAM 写在前面 网上看到许多示例&#xff0c;但一般都比较难以跑通。所以&#xff0c;还是老方法&#xff0c;先将matlab自带的例子研究下。 Examine 16-QAM Using MATLAB Examine 16-QAM Using MATLAB 或者&#xff0c;在matlab中&#xff0c;键入&#x…

Re9 Attention is all you need

变形金刚&#xff0c;启动&#xff01; Abstract 主流序列转录模型基于复杂的循环神经网络和卷积神经网络&#xff0c;包括一个encoder和decoder&#xff0c;同时在这之中使用一个叫注意力机制attention的东西本文提出了一个简单的网络架构&#xff0c;仅仅使用注意力机制&am…

【论文阅读】O’Reach: Even Faster Reachability in Large Graphs

Hanauer K, Schulz C, Trummer J. O’reach: Even faster reachability in large graphs[J]. ACM Journal of Experimental Algorithmics, 2022, 27: 1-27. Abstract 计算机科学中最基本的问题之一是可达性问题&#xff1a;给定一个有向图和两个顶点s和t&#xff0c;s可以通过…

(1)Linux的 安装与用户的创建

前言 本章正式开始Linux的学习 如果关于Linux环境搭配有问题的朋友 可以阅读此文章:Linux环境搭建 一&#xff0c;浅用一下吧 —— Hello, Linux! 我们现在已经登陆上了&#xff0c;我们当然可以用它来做很多事。 我们来用它写一个 "Hello, Linux!" &#xff0c;来…

Layui继续学习

1、简单评论区代码&#xff1a; <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <title>社区评论区</title> <link rel"stylesheet" href"https://cdn.staticfile.org/layui/2.6.8/css/…

关于“Python”的核心知识点整理大全20

目录 ​编辑 9.2 使用类和实例 9.2.1 Car 类 下面来编写一个表示汽车的类&#xff0c;它存储了有关汽车的信息&#xff0c;还有一个汇总这些信息的方法&#xff1a; car.py 9.2.2 给属性指定默认值 9.2.3 修改属性的值 1. 直接修改属性的值 2. 通过方法修改属性的值 3.…