中国统计网|SQL大厂面试常考知识点 | 新手速进!( 三 )


selectsubstr('abcde',3,2)from iteblog; -- 得到cd三.基础进阶
1.row_number
-- 按照字段salary倒序编号 select*, row_numberover(orderbysalarydesc)asrow_numfromtable_1; -- 按照字段deptid分组后再按照salary倒序编号 select*, row_numberover(partitionbydeptidorderbysalarydesc)asrankfromtable_1;
中国统计网|SQL大厂面试常考知识点 | 新手速进!
本文插图
按照depid分组 , 对salary进行排序(倒序)
除了row_number函数之外 , 还有两个分组排序函数 , 分别是rank 和dense_rank 。
rank排序相同时会重复 , 总数不会变, 意思是会出现1、1、3这样的排序结果;
dense_rank排序相同时会重复 , 总数会减少 , 意思是会出现1、1、2这样的排序结果 。
row_number 则在排序相同时不重复 , 会根据顺序排序 。
2.percentile 百分位函数
-- 获取income字段的top10%的阈值 selectpercentile(CAST(salaryASint),0.9))asincome_top10p_thresholdfromtable_1; -- 获取income字段的10个百分位点 selectpercentile(CAST(salaryASint),array(0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0))asincome_percentiles fromtable_1;3.时间函数
selectdatediff('2016-12-30','2016-12-29'); -- 得到 "1"to_date函数可以把时间的字符串形式转化为时间类型 , 再进行后续的计算 。
常用的日期提取函数包括:

  • year/month/day/hour/minute/second
  • 日期运算函数包括datediff(enddate,stratdate) 计算两个时间的时间差(day)
  • date_sub(stratdate,days) 返回开始日期startdate减少days天后的日期
  • date_add(startdate,days) 返回开始日期startdate增加days天后的日期
End.
【中国统计网|SQL大厂面试常考知识点 | 新手速进!】
点击“在看” 让更多朋友看到好内容!


推荐阅读