题解 | #实习广场投递简历分析(三)#

实习广场投递简历分析(三)

https://www.nowcoder.com/practice/83f84aa5c32b4cf5a75558d02dd7743c

SELECT m.job,m.first_year_mon,m.first_year_cnt,
    n.second_year_mon,n.second_year_cnt
FROM (SELECT job,date_format(date,'%Y-%m') first_year_mon,sum(num) first_year_cnt
    FROM resume_info
    WHERE year(date) = 2025
    GROUP BY job,first_year_mon
) m
JOIN (SELECT job,date_format(date,'%Y-%m') second_year_mon,sum(num) second_year_cnt
    FROM resume_info
    WHERE year(date) = 2026
    GROUP BY job,second_year_mon -- 将 first_year_mon 改为 second_year_mon
) n on m.job = n.job
WHERE left(m.first_year_mon,4) = left(n.second_year_mon,4) - 1 -- 年份差1
 AND substr(m.first_year_mon,6,2) = substr(n.second_year_mon,6,2) -- 月份相同
ORDER BY m.first_year_mon DESC,m.job DESC

按job,年-月做group by

1、查询第一年

SELECT job,date_format(date,'%Y-%m') first_year_mon,sum(num) first_year_cnt
    FROM resume_info
    WHERE year(date) = 2025
    GROUP BY job,first_year_mon

2、查询第二年

SELECT job,date_format(date,'%Y-%m') second_year_mon,sum(num) second_year_cnt
    FROM resume_info
    WHERE year(date) = 2026
    GROUP BY job,second_year_mon -- 将 first_year_mon 改为 second_year_mon

3、联结两表,对年份、月份进行判定

SELECT m.job,m.first_year_mon,m.first_year_cnt,
    n.second_year_mon,n.second_year_cnt
FROM m
JOIN n on m.job = n.job
WHERE left(m.first_year_mon,4) = left(n.second_year_mon,4) - 1 -- 年份差1
 AND substr(m.first_year_mon,6,2) = substr(n.second_year_mon,6,2) -- 月份相同

4、排序,完整代码如下

SELECT m.job,m.first_year_mon,m.first_year_cnt,
    n.second_year_mon,n.second_year_cnt
FROM (SELECT job,date_format(date,'%Y-%m') first_year_mon,sum(num) first_year_cnt
    FROM resume_info
    WHERE year(date) = 2025
    GROUP BY job,first_year_mon
) m
JOIN (SELECT job,date_format(date,'%Y-%m') second_year_mon,sum(num) second_year_cnt
    FROM resume_info
    WHERE year(date) = 2026
    GROUP BY job,second_year_mon -- 将 first_year_mon 改为 second_year_mon
) n on m.job = n.job
WHERE left(m.first_year_mon,4) = left(n.second_year_mon,4) - 1 -- 年份差1
 AND substr(m.first_year_mon,6,2) = substr(n.second_year_mon,6,2) -- 月份相同
ORDER BY m.first_year_mon DESC,m.job DESC

补充:

这里对年、月有更直观的判定。牛客运输结果和预期一致,但给的是答案错误

WHERE YEAR(DATE_SUB(n.second_year_mon, INTERVAL 1 YEAR)) = YEAR(m.first_year_mon)
  AND MONTH(n.second_year_mon) = MONTH(m.first_year_mon)

全部评论

相关推荐

整顿职场的柯基很威猛:这种不可怕,最可怕的是夹在一帮名校里的二本选手,人家才是最稳的。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务