当前位置: 首页 > news >正文

网站建设的客户咸阳网站建设xymokj

网站建设的客户,咸阳网站建设xymokj,怎么申请网站空间域名,网站 建设 函0 需求1 需求分析需求分析#xff1a;需求中需要求出分组中按成绩排名取倒数第二的值作为新字段#xff0c;且分组内没有倒数第二条的时候取当前值。如果本题只是求分组内排序后倒数第二#xff0c;则很简单#xff0c;使用row_number()函数即可求出#xff0c;但是本题问…0 需求1 需求分析需求分析需求中需要求出分组中按成绩排名取倒数第二的值作为新字段且分组内没有倒数第二条的时候取当前值。如果本题只是求分组内排序后倒数第二则很简单使用row_number()函数即可求出但是本题问题点在于没有倒数第二时候需要保留当前值如何优雅求出呢使用row_number()函数得到如下结果with data as(select 111 as stu_id, class1 as class_name, 69 as scoreunion allselect 113 as stu_id, class1 as class_name, 74 as scoreunion allselect 112 as stu_id, class1 as class_name, 80 as scoreunion allselect 115 as stu_id, class1 as class_name, 93 as scoreunion allselect 114 as stu_id, class1 as class_name, 94 as scoreunion allselect 124 as stu_id, class2 as class_name, 70 as scoreunion allselect 121 as stu_id, class2 as class_name, 74 as scoreunion allselect 123 as stu_id, class2 as class_name, 78 as scoreunion allselect 122 as stu_id, class2 as class_name, 86 as scoreunion allselect 9999 as stu_id, class3 as class_name, 99 as score) select stu_id, class_name, score, row_number() over (partition by class_name order by score desc ) rn1from data根据上述结果如何取出倒数第二值上层使用case when rn 2 then score end ,看看效果with data as(select 111 as stu_id, class1 as class_name, 69 as scoreunion allselect 113 as stu_id, class1 as class_name, 74 as scoreunion allselect 112 as stu_id, class1 as class_name, 80 as scoreunion allselect 115 as stu_id, class1 as class_name, 93 as scoreunion allselect 114 as stu_id, class1 as class_name, 94 as scoreunion allselect 124 as stu_id, class2 as class_name, 70 as scoreunion allselect 121 as stu_id, class2 as class_name, 74 as scoreunion allselect 123 as stu_id, class2 as class_name, 78 as scoreunion allselect 122 as stu_id, class2 as class_name, 86 as scoreunion allselect 9999 as stu_id, class3 as class_name, 99 as score) select stu_id, class_name, score, case when rn1 2 then score end as res from (select stu_id, class_name, score, row_number() over (partition by class_name order by score desc ) rn1--, row_number() over (partition by class_name order by score ) rn2from data) t倒数第二值是取出来了但是还不符合要求需求中要求该分组内生成的字段每一行全部为该值如何做呢这里有个小技巧也是数据清洗的手段如何将分组内空值用该分组内有值的值填充完整我们采用max()函数开窗的技巧max() over(partition by 分组字段)这样同一个组内的所有空值都会被赋值为同一个字段。SQL如下 with data as(select 111 as stu_id, class1 as class_name, 69 as scoreunion allselect 113 as stu_id, class1 as class_name, 74 as scoreunion allselect 112 as stu_id, class1 as class_name, 80 as scoreunion allselect 115 as stu_id, class1 as class_name, 93 as scoreunion allselect 114 as stu_id, class1 as class_name, 94 as scoreunion allselect 124 as stu_id, class2 as class_name, 70 as scoreunion allselect 121 as stu_id, class2 as class_name, 74 as scoreunion allselect 123 as stu_id, class2 as class_name, 78 as scoreunion allselect 122 as stu_id, class2 as class_name, 86 as scoreunion allselect 9999 as stu_id, class3 as class_name, 99 as score) select stu_id, class_name, score, max(case when rn1 2 then score end ) over(partition by class_name) as res from (select stu_id, class_name, score, row_number() over (partition by class_name order by score desc ) rn1--, row_number() over (partition by class_name order by score ) rn2from data) t我们看到其结果值越来越符合预期但是对于分组内只有一个值的如何处理呢这里我们需要辅助判断我们可以采用采用min() max()判断也可以采用percent_rank()0判断等等这里我们采用min() max()判断只要最大值等于最小值说明就分组内值唯一最终SQL如下with data as(select 111 as stu_id, class1 as class_name, 69 as scoreunion allselect 113 as stu_id, class1 as class_name, 74 as scoreunion allselect 112 as stu_id, class1 as class_name, 80 as scoreunion allselect 115 as stu_id, class1 as class_name, 93 as scoreunion allselect 114 as stu_id, class1 as class_name, 94 as scoreunion allselect 124 as stu_id, class2 as class_name, 70 as scoreunion allselect 121 as stu_id, class2 as class_name, 74 as scoreunion allselect 123 as stu_id, class2 as class_name, 78 as scoreunion allselect 122 as stu_id, class2 as class_name, 86 as scoreunion allselect 9999 as stu_id, class3 as class_name, 99 as score) select stu_id, class_name, score, max(casewhen rn1 ! rn2 and rn1 2 --正序和倒序值不等 则取倒数第二的值 rn12的值then scorewhen rn1 rn2 then score --正序和倒序值相等 则取当前值end) over (partition by class_name) res from (select stu_id, class_name, score, dense_rank() over (partition by class_name order by score desc ) rn1, dense_rank() over (partition by class_name order by score) rn2 --用来辅助判断-- , percent_rank() over (partition by class_name order by score) pr --也可以采用该函数辅助判断(pr0时候)from data) t2 小结本文通过实际需求中的案例讲解了如何将分组内空值补充完整的技巧通过开窗min()/max() over(partition by 分组字段)来补充注意点max()函数中根据实际情况写case when语句或构造符合实际需求的条件往往数据清晰中会用到这一技巧。
http://www.sczhlp.com/news/257318/

相关文章:

  • 网站跳转微信链接本墨陈黑做网站有版权
  • sns电商网站深圳做app开发
  • 濮阳的网站建设wordpress特别卡
  • 随州市住房和城乡建设部网站wordpress设置静态之后文章打不开
  • 燕郊做网站的公司什么软件可以在手机上做装修设计
  • 咸阳做网站排名个人博客网站建设
  • 餐饮加盟什么网站建设深圳龙岗个人网站建设
  • 美妆企业网站模板宣传片制作公司有哪些
  • 电商erp软件百度关键词seo推广
  • 59zwd一起做网站网站虚拟主机购买教程
  • 河北高端网站定制公司北京ui及网页设计
  • c 网站建设可视化实现重庆网站建
  • 建设网站的那个公司好辽宁省建设厅证书查询网站
  • discuz做网站如何做cpa单页网站
  • 网站优化成都哪里好颖灵信息科技网站建设
  • 不用花生壳做网站服务器潍坊那个公司做网站比较好
  • 2025年平板清洗机标杆厂家最新推荐:恒泰清洗,超声波清洗机/清洗烘干机/全自动清洗机/周转箱清洗机/工业清洗机/树立高效洁净新标准
  • 11月3号
  • 低代码与传统开发:不是替代,而是互补
  • 关于建设公司网站的议题贵州做网站kuhugz
  • 老榕树网站建设php网站开发概念和简介
  • 班级网站成品iis不用dns解析还有什么办法也能一个ip对应多个网站吗
  • 网站的做公司北京海淀区注册企业
  • 国内专业网站设计济南全屋定制
  • 萧山做网站公司网站的超链接怎么做
  • 漳州建设企业网站国内优秀企业网站设计
  • 哪个网站最好儿童编程
  • 网络彩票网站开发微网站建设要多少钱
  • 江苏省建设工程备案网站绍兴越城区建设局网站
  • 如何查看 网站诊断html5基础知识