【SQL每日一练】day9:牛客高频习题练习:数据过滤+子查询专题

题目一:查询在pc上投递的所有记录

题目要求:

表结构:

运行结果示例:

思路:

        使用where子句进行条件匹配查询。

运行代码示例:

select * from deliver_record_detail where device = "pc"

题目二:查询投递最低最高薪资差别大于2的职位的投递用户user_id

题目要求:

牛客简历详细投递数据表`deliver_record_detail`如下,查询投递简历中最低薪资(min_salary)与最高薪资(max_salary)差别大于2的职位的投递用户user_id

表结构:

运行结果示例:

思路:

        直接将判断条件写入where子句即可。

运行代码示例:

select user_id from deliver_record_detail
where max_salary - min_salary > 2

题目三:查询薪资信息不为空的职位投递记录

题目要求:

牛客简历详细投递数据表`deliver_record_detail`如下,请你查询薪资信息不为空的职位投递记录(即最高薪资与最低薪资不全为空)

表结构:

运行结果示例:

思路:

        本题考察了对于空值的判断,注意判断一个字段内容是否为空要用is null,而不能使用等号。

运行代码示例:

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

题目四:查询城市为北京的职位投递记录

题目要求:

牛客简历详细投递数据表`deliver_record_detail`
如下,请你查询城市为北京的职位投递记录

表结构:

运行结果示例:

思路:

        本题考察了where子句的使用。注意题目中工作城市有“北京”和“北京市”两种情况,这两种情况都需要我们查询出来。

运行代码示例:

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

题目五:查询2022年毕业用户的刷题记录

题目要求:

现有牛客刷题记录数据表、用户信息表如下,请查询2022年毕业用户的刷题记录,查询返回结果名称和顺序为

user_id|question_type|device|pass_count|date

表结构:

运行结果示例:

思路:

        我们需要首先在用户表中查询出有哪些用户是在2022年毕业的学生,再在刷题记录表中找到对应用户id的刷题记录。

运行代码示例:

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'
)

题目六:查询2022年以来刷题用户的用user_id和毕业院校

题目要求:

现有牛客刷题记录数据表、用户信息表如下,对于2022年以来有刷题的用户,请查询他们的user_id和毕业院校,查询返回结果名称和顺序为

user_id|university

表结构:

运行结果示例:

思路:

        本题和上一题原理类似,只不过本题主查询是在用户表中进行的,子查询是在刷题记录表中进行的,此外,在子查询中,我们还需要使用year()函数,来将日期中的年份拆解出来。对于年份的拆解,我们也可以用between and或者字符串截取函数实现。

运行代码示例:

select user_id,university
from user_info
where user_id in (
    select user_id from questions_pass_record
    where year(date) >= '2022'
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值