【SQL每日一练】day8:牛客高频习题练习:基础查询+多表连接专题

题目一:查询所有投递用户user_id并去重

题目要求:

牛客简历投递数据表`deliver_record`如下,请你查询所有投递用户user_id并且进行去重展示,查询结果和返回顺序如下

id

表结构:

运行结果示例:

思路:

        使用distinct关键字进行去重操作。

运行代码示例:

select distinct user_id 
from deliver_record

题目二:查询限制行数

题目要求:

牛客简历投递数据表`deliver_record`如下,请你查询前两行

表结构:

运行结果示例:

思路:

        考察了limit子句的运用

运行代码示例:

select *
from deliver_record
limit 2

题目三:将查询列重新命名

题目要求:

牛客简历投递数据表`deliver_record`如下,请你仅查询job_salary项,并将其结果命名为'职位工资'

表结构:

运行结果示例:

思路:

        考察了as关键字重命名

运行代码示例:

select job_salary as 职位工资
from deliver_record

题目四:查询表总行数

题目要求:

牛客简历投递数据表`deliver_record`如下,请你查询投递数据表的总行数,并将结果命名为`cnt`

表结构:

运行结果示例:

思路:

        考察了count()函数的使用

运行代码示例:

select count(*) as cnt from deliver_record

题目五:查询被投递过的职位信息

题目要求:

现有牛客投递记录表、职位信息表 ,请查询每个公司`company_id`查看过的投递用户数cnt,`resume_if_checked` 简历是否被查看 1 被查看 0 未被查看(查看数量为0的不用输出,根据`company_id`升序排序输出)
查询返回结果名称和顺序如下。

job_id|boss_id|company_id|post_time|salary|job_city

表结构:

运行结果示例:

思路:

        这道题有问题!!首先是题目表述不明,要求查询每个公司`company_id`查看过的投递用户数cnt,不知道到底是统计公司已查看用户简历的数量还是统计公司有没有被用户查看过,看了下讨论区这两种理解都有。其次是最后的运行结果也不需要查询出来cnt的值,甚至都没有按照题目要求数量为0的不输出,也没有排序....以上两种情况都不难处理,所以这里分别给出以上两中情况的解决代码和能够通过官方题解的代码。

select *
from job_info
where job_id in 
(select job_id
from deliver_record
where resume_if_checked='1')
order by company_id;
select
    company_id,
    count(distinct user_id) as  cnt
from deliver_record dr
inner join job_info ji on dr.job_id = ji.job_id  
where dr.resume_if_checked = 1
group by company_id
order by company_id asc;

运行代码示例:

select job_id,boss_id,company_id,post_time,salary,job_city
from job_info j
join deliver_record d
using(job_id)

题目六:查询每个公司查看过的投递用户数

题目要求:

牛客投递记录数据表、职位信息表 ,查询每个公司`company_id`查看过的投递用户数cnt,`resume_if_checked` 简历是否被查看 1 被查看 0 未被查看
查询返回结果名称和顺序

company_id|cnt

表结构:

运行结果示例:

思路:

        这道题同样不是那么严谨....运行结果中去除了cnt结果为0的数据信息,也就是如果存在未被用户投递简历的公司,那么我们就直接忽视该公司。其次我们要注意对统计结果去除。其他的都是很常规的解法了,没有什么特别需要注意的,连表操作+分组统计,很常规的搭配,不知道为什么会到中等难度。

运行代码示例:

Select company_id, Count(DISTINCT user_id) As cnt
From job_info ji
Join deliver_record dr
Using(job_id)
Where resume_if_checked  = 1
Group By company_id;

        牛客和力扣上的免费题目都刷完了,为了做题特意开了牛客会员,感觉上当受骗了(大哭),题目质量还不如免费的,本以为这组题单都是中等难度,通过率也很低,会很有难度的,现在看来通过率低应该是题目表述有问题的缘故.....

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值