• 参考一位网友的做法,感觉非常好理解
  • 实际上就是两次查询再连结两张查询后的表
  • 连接条件是个坑,job和date作为连结条件均不唯一(因为无法保证是同一个job然后不同年的同一月,单单连结job和date都无法做到这个条件)因此不能作为连结条件,会报错

解决方法:添加新字段concat(job,month(date)作为链接条件

select a.job, a.first_year_mon, a.first_year_cnt , b.second_year_mon, b.second_year_cnt
from
(select job , 
    concat(job,month(date)) as id ,
    DATE_FORMAT(date , '%Y-%m') first_year_mon , 
    sum(num) first_year_cnt
from resume_info
where date < '2026-01-01'and date > '2024-12-31'
group by job, first_year_mon)a
join
(select job ,
    concat(job,month(date)) as id ,
    DATE_FORMAT(date, '%Y-%m') second_year_mon ,
    sum(num) second_year_cnt
from resume_info
where date < '2027-01-01'and date > '2025-12-31'
group by job, second_year_mon)b
on a.id = b.id
order by first_year_mon desc , job desc;