题目描述
我们有一个表:
resume_info
:包含简历投递信息,包括记录IDid
、岗位名称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;