SQL 86 ) 实习广场投递简历(三)

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

http://www.nowcoder.com/questionTerminal/83f84aa5c32b4cf5a75558d02dd7743c

  • 参考一位网友的做法,感觉非常好理解
  • 实际上就是两次查询再连结两张查询后的表
  • 连接条件是个坑,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;
SQL 文章被收录于专栏

SQL

全部评论
增添新字段挺有趣的,另一个写法其实可以是on a.job = b.job and right(first_year_mon,2) = right(second_year_mon, 2)
4 回复 分享
发布于 2021-05-13 01:53
select t1.*,t2.second_year_mon,t2.second_year_cnt from (select job,date_format(date,"%Y-%m") as first_year_mon,sum(num) as first_year_cnt from resume_info where year(date)="2025" group by job,date_format(date,"%Y-%m")) t1 left outer join (select job,date_format(date,"%Y-%m") as second_year_mon,sum(num) as second_year_cnt from resume_info where year(date)="2026" group by job,date_format(date,"%Y-%m")) t2 on t1.job=t2.job and substring(t1.first_year_mon,6,2)=substring(t2.second_year_mon,6,2) order by first_year_mon desc,job desc
点赞 回复 分享
发布于 2022-06-15 19:58
牛客后台会报错诶
点赞 回复 分享
发布于 2022-06-28 17:30
concat也需要写在group by才能通过
点赞 回复 分享
发布于 2022-10-04 06:15 加拿大
month()函数在牛客会报错
点赞 回复 分享
发布于 2022-11-02 12:41 广东
id不写在group by 里会报错,写进去group by 不就无法汇总job和月的数据了么?
点赞 回复 分享
发布于 2022-11-14 10:51 江苏

相关推荐

在评审的大师兄很完美:像这种一般就是部门不匹配 转移至其他部门然后挂掉 我就是这样被挂了
点赞 评论 收藏
分享
死在JAVA的王小美:哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈,我也是,让我免了一轮,但是硬气拒绝了
点赞 评论 收藏
分享
15 1 评论
分享
牛客网
牛客企业服务