牛客网sql笔试题,请大家帮忙解答

问题:

 

在牛客实习广场有很多公司开放职位给同学们投递,同学投递完就会把简历信息存到数据库里。

现在有简历信息表(resume_info),部分信息简况如下:

第1行表示,在2025年1月2号,C++岗位收到了53封简历

。。。

最后1行表示,在2027年2月6号,C++岗位收到了231封简历

 

请你写出SQL语句查询在2025年投递简历的每个岗位,每一个月内收到简历的数目,和对应的2026年的同一个月同岗位,收到简历的数目,最后的结果先按first_year_mon月份降序,再按job降序排序显示,以上例子查询结果如下:

解析:

第1行表示Python岗位在2025年2月收到了93份简历,在对应的2026年2月收到了846份简历

。。。

最后1行表示C++岗位在2025年1月收到了107份简历,在对应的2026年1月收到了470份简历

 

我的解答:

我解答的运行结果

你可以看一下这个回答, 脚本如下:

-- 请你写出SQL语句查询在2025年投递简历的每个岗位,每一个月内收到简历的数目,
-- 和对应的2026年的同一个月同岗位,收到简历的数目,
-- 最后的结果先按first_year_mon月份降序,再按job降序排序显示

select t1.job,t1.f_y_m as first_year_mon,t1.f_num as first_year_cnt,
t2.s_y_m as second_year_mon,t2.s_num as second_year_cnt
from (
select job,date_format(date,'%Y-%m') as f_y_m,sum(num) as f_num 
from resume_info 
where year(date) = 2025 
group by job,date_format(date,'%Y-%m')
)t1 
left join (
select job,date_format(date,'%Y-%m') as s_y_m,sum(num) as s_num 
from resume_info 
where year(date) = 2026 
group by job,date_format(date,'%Y-%m')
)t2 
on t1.job = t2.job 
and substr(t1.f_y_m,-2) = substr(t2.s_y_m,-2)
# and date_format(t1.f_y_m,'%Y') = date_format(t2.s_y_m,'%Y') - 1
order by first_year_mon desc,t1.job desc 
;