题目描述:SQL语句查询在2025年投递简历的每个岗位,每一个月内收到简历的数目,和对应的2026年的同一个月同岗位,收到简历的数目,最后的结果先按first_year_mon月份降序,再按job降序排序显示。
原本想尝试用窗口函数直接搞定,怎么弄都不对。还是老老实实按逻辑一步一步来好了。(┭┮﹏┭┮)
with first_year as
(
select job,date_format(date,"%Y-%m") as ym,sum(num) as cnt
from resume_info
where year(date) ="2025"
group by job,ym
),
second_year as
(
select job,date_format(date,"%Y-%m") as ym,sum(num) as cnt
from resume_info
where year(date) ="2026"
group by job,ym
)
select fy.job,
fy.ym as first_year_mon,
fy.cnt as first_year_cnt,
sy.ym as second_year_mon,
sy.cnt as second_year_cnt
from first_year fy join second_year sy
on fy.job=sy.job
and right(fy.ym,2)=right(sy.ym,2)
order by 2 desc, 1 desc先找出第一年2025年结果,再找出第二年2026的,然后连接就好。
注意date_format(date,"%Y-%m")无法在被year()、month()提取了。因为year()、month()只能提取完整的日期格式或时间戳。
所以这边用right()取个巧。

京公网安备 11010502036488号