将近两个月没有写文章了,真的堕落,平时每天在单位天天写Sql,总感觉自己的Sql还可以,相信大部分都有这个感觉,每天都在写,别人一问Sql怎么样,还可以,一到真格时,GG了,度娘救救我。
曾经,一个Sql研究半天,嘿,终于搞懂了,一星期过后,又有新的业务需求,但Sql逻辑基本一致,哎,我上周怎么写的了,翻出以前写的,呵呵呵,这是个嘛呀。。。。
现在很多数据分析岗位都需要面试Sql、Hql、Spark Sql,百分之90都需要现场手写,你说你现场百度,还得偷偷摸摸的,同时几个人面试呢,还写不出来,傻眼了。当然,即使当时写不出来也不要空着,思路写上亦可。就像初中平时测验似的,写个思路或者公式还给点分呢。
今天突然这么一个题,求解每个月销售前三名的销售人员,基本上大部分人都练过求解每个学科前三名这道题。这不是换汤不换药吗。
现有学生成绩表如下图所示:(操作环境Sqlserver2014)
首先,查询按学科的排名
SELECT name,
subject,
score,
--对学科进行分区,成绩进行降序排列
ROW_NUMBER() OVER(PARTITION BY subject ORDER BY score DESC) AS SCORE_RANK
FROM #SCORE
结果如下图所示:
查询上面结果的 SCORE_RANK小于4即可
SELECT *
FROM (
SELECT name,
subject,
score,
--对学科进行分区,成绩进行降序排列
ROW_NUMBER() OVER(PARTITION BY subject ORDER BY score DESC) AS SCORE_RANK
FROM #SCORE
) AS A
WHERE SCORE_RANK<4
以后在遇到类似情况,可以举一反三,帅的人已经点了关注,就差你了!