题目描述

我们有一个表:

  • resume_info:包含简历投递信息,包括记录ID id、岗位名称 job、投递日期 date 和投递数量 num

目标是查询出在2025年内每个月每个岗位收到的简历数量,并按月份降序、简历数量降序排列。

知识点

  • 日期函数:使用YEAR函数提取日期中的年份,使用DATE_FORMAT函数格式化日期为YYYY-MM格式。
  • 聚合函数:使用SUM函数计算每个月每个岗位的简历投递总数。
  • 分组:使用GROUP BY子句按月份和岗位分组。
  • 排序:使用ORDER BY子句按月份降序、简历数量降序排列结果。

关键问题分析

1. 筛选2025年的投递记录

我们需要使用YEAR函数从日期中提取年份,并筛选出2025年的记录:

where year(date) = 2025

2. 格式化日期并计算每个月每个岗位的简历投递总数

我们使用DATE_FORMAT函数格式化日期为YYYY-MM格式,并使用SUM函数计算每个月每个岗位的简历投递总数:

select job, date_format(date, "%Y-%m") as mon, sum(num) as cnt
from resume_info
where year(date) = 2025
group by date_format(date, "%Y-%m"), job
  • DATE_FORMAT(date, "%Y-%m") AS mon: 格式化日期为YYYY-MM格式。
  • SUM(num) AS cnt: 计算每个月每个岗位的简历投递总数。
  • GROUP BY date_format(date, "%Y-%m"), job: 按月份和岗位分组计算投递总数。

3. 排序输出

我们按月份降序、简历数量降序排列输出结果:

order by mon desc, cnt desc
  • ORDER BY mon DESC, cnt DESC: 按月份降序、简历数量降序排列。

完整代码

select job, date_format(date, "%Y-%m") as mon, sum(num) as cnt
from resume_info
where year(date) = 2025
group by date_format(date, "%Y-%m"), job
order by mon desc, cnt desc;