牛客题霸-SQL篇(刷题记录二)

本文基于前段时间学习总结的 MySQL 相关的查询语法,在牛客网找了相应的 MySQL 题目进行练习,以便加强对于 MySQL 查询语法的理解和应用。

由于涉及到的数据库表较多,因此本文不再展示,只提供 MySQL 代码与示例输出。

以下内容是牛客题霸-SQL 篇的第 223 - 262 道题目的 MySQL 代码答案,本文跳过了其中一些更新、删除、修改等操作的题目。


SQL 223:查询没有分类的电影 id 及电影名称

select f.film_id, f.title
from film f
left join film_category fc
on f.film_id = fc.film_id
where fc.category_id is null

在这里插入图片描述

SQL 224:查询属于 Action 分类的所有电影名称和对应的电影描述信息

select title, description
from film f
join film_category fc
on f.film_id = fc.film_id
join category c
on fc.category_id = c.category_id
where c.name = 'Action'

在这里插入图片描述

SQL 226:将所有员工的 last_name 和 first_name 拼接起来作为 Name

select concat(last_name,' ',first_name) as Name
from employees

SQL 227-228:创建一个 actor 表并批量插入数据

create table if not exists actor(actor_id smallint(5) not null primary key,first_name varchar(45) not null,last_name varchar(45) not null,last_update timestamp not null
)insert into actor(actor_id, first_name, last_name, last_update)
values
(1, 'PENELOPE', 'GUINESS', '2006-02-15 12:34:33'),
(2, 'NICK', 'WAHLBERG', '2006-02-15 12:34:33')

SQL 244:将所有员工的 last_name 和 first_name 通过 (') 连接起来

select concat(last_name, "'", first_name)
from employees

SQL 246:查询所有员工的 first_name,并按照 first_name 最后两个字母升序排列

select first_name
from employees
order by right(first_name, 2) 或者 order by substr(first_name, -2)

在这里插入图片描述

SQL 247:按照 dept_no 进行汇总,将属于同一个部门的 emp_no 按照逗号进行连接

select dept_no,
group_concat(emp_no separator ',') 
from dept_emp 
group by dept_no

在这里插入图片描述

SQL 248:查询排除在职(to_date = ‘9999-01-01’ )员工的最大、最小 salary 之后,其他的在职员工的平均工资 avg_salary

# 方法一
select (sum(salary) - max(salary) - min(salary))/(count(salary) - 2) as avg_salary
from salaries
where to_date = '9999-01-01'# 方法二
select avg(salary) as avg_salary
from salaries
where salary>(select min(salary) from salaries
) and salary<(select max(salary) from salaries
) and to_date='9999-01-01'

在这里插入图片描述

SQL 253:查询 emp_no,first_name,last_name,奖金类型 btype,对应的薪水 salary 以及奖金金额 bonus,bonus 结果保留一位小数,按 emp_no 升序排序

select e.emp_no, first_name, last_name, btype, salary,
case
when btype = 1 then round(salary * 0.1, 1)
when btype = 2 then round(salary * 0.2, 1)
else round(salary * 0.3, 1)
end as bonus
from employees e
join emp_bonus eb 
on e.emp_no = eb.emp_no
join salaries s 
on e.emp_no = s.emp_no
where to_date = '9999-01-01'
order by e.emp_no

在这里插入图片描述

SQL 254:查询每个在职员工(to_date = ‘9999-01-01’)的累计 salary

select emp_no, salary,
sum(salary) over(order by emp_no) as running_total
from salaries
where to_date = '9999-01-01'

在这里插入图片描述

SQL 255:查询 employees 表中排名为奇数行的 first_name(输出结果不改变原表中 first_name 的顺序

select e.first_name
from employees e
join
(select first_name,rank() over(order by first_name) as rnfrom employees
) a
on a.first_name = e.first_name
where rn % 2 = 1

在这里插入图片描述

SQL 256:查询出现 3 次及 3 次以上的积分

select number from grade
group by number
having count(*) >= 3

在这里插入图片描述

SQL 257:查询通过题目个数的排名,通过题目个数相同的,排名相同,此时按照 id 升序排列

select *,
dense_rank() over(order by number desc) as t_rank
from passing_number

在这里插入图片描述

SQL 258:查询每个人的任务情况,没有任务的也要输出,并按照每个人的 id 升序排列

select p.id, name, content
from person p
left join task t
on p.id = t.person_id
order by p.id

在这里插入图片描述

SQL 259:查询每一个日期里面,正常用户发送给正常用户邮件失败的概率是多少,结果保留到小数点后 3 位,并按照日期升序排列

with a as(select id from userwhere is_blacklist = 0
) -- 正常用户的 idselect date,
round(avg(if(type = 'completed', 0, 1)), 3) as p
from email e
where e.send_id in(select id from a
)
and e.receive_id in(select id from a)
group by date
order by date

SQL 260:查询每个用户最近一天登录的日子,并按照 user_id 升序排列

# 方法一
select user_id, max(date) as date
from login
group by user_id
order by user_id# 方法二:窗口函数
with a as(select user_id, date,rank() over(partition by user_id order by date desc) as rnfrom login  
)select user_id, date
from a
where rn = 1
order by user_id

SQL 261:查询每个用户最近一天登录的日子,用户的名字,及用户用的设备的名字,并按照 user_name 升序排列

# 方法一:rank() 的窗口函数
with a as(select u.name as u_n, c.name as c_n, l.date as date,row_number() over(partition by user_id order by l.date desc) as rnfrom login ljoin user uon l.user_id = u.idjoin client con l.client_id = c.id
)select a.u_n, a.c_n, a.date
from a
where rn = 1
order by a.u_n# 方法二:max(date) 的窗口函数
with a as(select u.name as u_n, c.name as c_n, l.date as date,max(l.date) over(partition by user_id) as max_datefrom login ljoin user uon l.user_id = u.idjoin client con l.client_id = c.id
)select a.u_n, a.c_n, a.date
from a
where a.date = a.max_date
order by a.u_n

在这里插入图片描述

SQL 262:查询新登录用户次日成功的留存率,即第 1 天登陆之后,第 2 天再次登陆的概率,保留小数点后 3 位

# 方法一
with a as(select *,min(date) over(partition by user_id) as first_dayfrom login
), -- 每个 user 首次登陆的日期
b as(select count(distinct user_id)from login
) -- 总的 user 数量select round(count(distinct a.user_id)/(select * from b), 3) as p
from a
where datediff(date, first_day) = 1# 方法二
select round(count(distinct a.id) / (select count(distinct user_id) from login ),3)
from
(select user_id id, date,
lead(date,1)over(partition by user_id order by date) date2
from login) a
where  datediff(date2,date)=1;

在这里插入图片描述

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

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

相关文章

HarmonyOS应用开发实战 - Api9 拍照、拍视频、选择图片、选择视频、选择文件工具类

鸿蒙开发过程中&#xff0c;经常会进行系统调用&#xff0c;拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具类。 1.话不多说&#xff0c;先展示样式 2.设计思路 根据官方提供的指南开发工具类&#xff0c;基础的拍照、拍视频、图库选照片、选…

使用Python进行自动化测试Selenium与PyTest的结合【第150篇—自动化测试】

&#x1f47d;发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 使用Python进行自动化测试&#xff1a;Selenium与PyTest的结合 在软件开发中&#xff0c;自…

css盒子模型及浮动

内容(content)、内边距(padding)、边框(border)、外边距(margin) oder:1px solid red; 边框的粗细 边框的样式&#xff08;虚线还是实线&#xff09; 边框的颜色 border中也有一些属性可以直接调某一个方向上的边框的粗细&#xff0c;样式&#xff0c;颜色 border-left\bord…

2024/3/24 LED点阵屏

显示原理&#xff1a; 类似矩阵键盘&#xff0c;逐行or逐列扫描 74HC595是串行 寄存器 感觉就是三转八寄存器 并行&#xff1a;同时输出&#xff1b;串行&#xff1a;一位一位输出 先配置74HC595&#xff0c;重新进行位声明 sbit RCKP3^5; //RCLK sbit SCKP3^6; …

淘宝|天猫|京东|1688主流电商平台的实时数据返回接口|附Python实例

导读&#xff1a;随着淘宝/天猫直通车功能升级&#xff0c;很多功能越来越白盒化&#xff0c;越来越简化&#xff0c;更方便用户的操作&#xff0c;只需一键即可看出淘宝/天猫直通车存在的问题。淘宝/天猫直通车千人千面后有了实时数据工具&#xff0c;下面通过一个案例告诉大家…

23. UE5 RPG制作属性面板(一)

随着角色的属性越来越多&#xff0c;我们不能每次都进行showdebug abilitysystem进行查看&#xff0c;而且玩家也需要查看角色属性&#xff0c;所以需要一个查看玩家角色属性的面板。 在前面&#xff0c;我们创建三种类型的属性 Primary Attributes&#xff08;主要属性&#…

常见的OOM 问题的 6 种场景

今天跟大家一起聊聊线上服务出现 OOM 问题的 6 种场景,希望对你会有所帮助。 一、堆内存 OOM 堆内存 OOM 是最常见的 OOM 了。 出现堆内存 OOM 问题的异常信息如下: java.lang.OutOfMemoryError: Java heap space此 OOM 是由于 JVM 中 heap 的最大值,已经不能满足需求了…

资深测试总结,性能测试-常见并发问题+解决总结(最全)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 1、并发测试的定义…

vscode用SSH远程开发c语言

vscode配置远程 这里我使用虚拟机进行展示&#xff0c;首先需要你的虚拟机安装好ssh 没安装好就执行下面的命令安装并开启服务 sudo apt-get install ssh sudo service ssh start ps -e | grep sshvscode安装 remote-ssh扩展 点击左下角的远程连接&#xff0c;我这里已经连接…

【Hive】HIVE运行卡死没反应

Hive运行卡死 再次强调 hive&#xff1a;小兄弟&#xff0c;没想到吧&#xff0c;咱可不是随便的人。&#x1f604; 那么&#xff0c;这次又遇见了hadoop问题&#xff0c;问题描述是这样的。 hive> insert into test values(1, nucty, 男); Query ID atguigu_202403241754…

图论基础|695. 岛屿的最大面积、1020. 飞地的数量、130. 被围绕的区域

695. 岛屿的最大面积 力扣题目链接(opens new window) 给你一个大小为 m x n 的二进制矩阵 grid 。 岛屿 是由一些相邻的 1 (代表土地) 构成的组合&#xff0c;这里的「相邻」要求两个 1 必须在 水平或者竖直的四个方向上 相邻。你可以假设 grid 的四个边缘都被 0&#xff0…

C语言操作符和数据类型的存储详解

CSDN成就一亿技术人 目录​​​​​​​ 一.操作符 一.算数操作符&#xff1a; 二.位移操作符&#xff1a; 三.位操作符&#xff1a; 四.赋值操作符&#xff1a; 五.单目操作符&#xff1a; 六.关系操作符&#xff1a; 七.逻辑操作符&#xff1a; 八.条件操作符&…

【Redis】Redis 介绍Redis 为什么这么快?Redis数据结构Redis 和Memcache区别 ?为何Redis单线程效率也高?

目录 Redis 介绍 Redis 为什么这么快&#xff1f; Redis数据结构 Redis 和Memcache区别 &#xff1f; 为何Redis单线程效率也高&#xff1f; Redis 介绍 Redis 是一个开源&#xff08;BSD 许可&#xff09;、基于内存、支持多种数据结构的存储系统&#xff0c;可以作为数据…

前端基础篇-前端工程化 Vue 项目开发流程(环境准备、Element 组件库、Vue 路由、项目打包部署)

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 环境准备 1.1 安装 NodeJs 1.2 验证 NodeJs 环境变量 1.3 配置 npm 的全局安装路径 1.4 切换 npm 的淘宝镜像( npm 使用国内淘宝镜像的方法(最新) ) 1.5 查看镜像…

【C语言】——指针四:字符指针与函数指针变量

【C语言】——指针四&#xff1a;字符指针与函数指针变量 一、字符指针二、函数指针变量2.1、 函数指针变量的创建2.2、两段有趣的代码 三、typedef关键字3.1、typedef的使用3.2、typedef与define比较 四、函数指针数组 一、字符指针 在前面的学习中&#xff0c;我们知道有一种…

解码新时代内存架构:探秘数据在内存中的灵动驻足

欢迎来到白刘的领域 Miracle_86.-CSDN博客 系列专栏 C语言知识 先赞后看&#xff0c;已成习惯 创作不易&#xff0c;多多支持&#xff01; 随着信息技术的飞速发展&#xff0c;我们身处一个数据爆炸的时代。数据的处理和存储方式正日益成为技术革新的重要领域。在新时代的…

CSS时钟案例

文章目录 1. 演示效果2. 分析思路3. 代码实现 1. 演示效果 2. 分析思路 背景是表盘&#xff0c;不用自己制作然后用CSS的定位做时针&#xff0c;分针和秒针黑点用伪元素::after生成转动用animation实现 3. 代码实现 <!DOCTYPE html> <html lang"en">&…

Java学习笔记 | JavaSE基础语法05 | 方法

文章目录 0.前言1. 方法概述2. 方法的定义和调用2.1 无参数方法定义和调用2.2 带参数方法定义和调用1 带参数方法定义和调用2 形参和实参3 带参数方法练习 2.3 带返回值方法的定义和调用1 带返回值方法定义和调用2 带返回值方法练习13 带返回值方法练习24 带返回值方法练习3 3.…

Python学习从0到1 day18 Python可视化基础综合案例 1.折线图

我默记这段路的酸楚&#xff0c;等来年春暖花开之时再赏心阅读 —— 24.3.24 python基础综合案例 数据可视化 — 折线图可视化 一、折线图案例 1.json数据格式 2.pyecharts模块介绍 3.pyecharts快速入门 4.数据处理 5.创建折线图 1.json数据格式 1.什么是json 2.掌握如何使用js…

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R &#xff0c;输入 compmgmt.msc 2、找到Sql Server配置管理器