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

做网站开发的公司哪家好雄安专业网站建设

做网站开发的公司哪家好,雄安专业网站建设,微信做模板下载网站,做网站的文章背景 最近遇到需求,需要对数据进行分组排序并获取每组数据的前三名。 一般涉及到分组,第一时间就是想到使用group by对数据进行分组,但这样分组,到最后其实只能获取到每组数据中的一条记录。 在需要获取每组里面的多条记录的时候…

背景

最近遇到需求,需要对数据进行分组排序并获取每组数据的前三名。
一般涉及到分组,第一时间就是想到使用group by对数据进行分组,但这样分组,到最后其实只能获取到每组数据中的一条记录。
在需要获取每组里面的多条记录的时候,就实现不了了。就算能实现,也得用上比较复杂的SQL嵌套或者业务层实现。

窗口函数

这个时候,就该想到我们的窗口函数了,在MySQL8开始支持窗口函数。
通过窗口函数,可以很轻易地实现数据分组并获取分组内的多条记录。
并且有多种效果的获取排序方式。

语法:
SELECT 窗口函数() OVER(PARTITION BY 字段 ORDER BY 字段) FROM 表
可以把中间的“ 窗口函数() OVER(PARTITION BY 字段 ORDER BY 字段)”看成是一个函数,处理数据并获取到记录的排序值。

RNAK()

RNAK()对数据进行排序,从1开始,不一定连续,如果排序值相同,则名次一样,后面的排名会按照排在前面有多少数据去算。如有两个第二名,那么直接就没有第三名,下一个直接到第四名。

SELECT id,RANK() OVER(PARTITION BY subject ORDER BY score DESC) AS num,subject,name,score FROM test

在这里插入图片描述
看math的数据,因为tom和jack的成绩一样,所以他们都是第二名,而lala直接到了第四名,也就是没有第三名。

ROW_NUMBER()

对相等的排序值不进行区分,也就是即使排序值相同对应的排名也不同,序号从1到n连续。

SELECT id,ROW_NUMBER() OVER(PARTITION BY subject ORDER BY score DESC) AS num,subject,name,score FROM test

在这里插入图片描述
如上图,tom和jack的math分数是一样的,但是还是会强行给他们分出先后顺序。

DENSE_RANK()

对于相同的排序值,则排名相同,排名从1开始连续。如,有两个排第二,下一个就是序号3。(和一、二、三等奖算法差不多)

SELECT id,DENSE_RANK() OVER(PARTITION BY subject ORDER BY score DESC) AS num,subject,name,score FROM test
在这里插入图片描述
如上图,tom和jack的math并列二等奖,lala就是三等奖。

http://www.yayakq.cn/news/809635/

相关文章:

  • 企业电子商务网站开发数据库设计百度验证网站有什么用
  • 重庆专业的网站建设公司排名手机网站用什么后台
  • 网站关键词优化排名外包跳转网站怎么做
  • 楚天网站建设合同网站 多服务器
  • 重庆网站设计工作室怎么自己做网站qq
  • 保定网站设计公司论述制作网站的一般过程
  • 360网站推广电话lnmp wordpress 换域名
  • 有人上相亲网站做传销燕窝做网站需要视频衔接怎么做
  • 建设网站群公司比较好
  • 做网站建设公司crm在线的提升服务网站单页面可以做302跳转吗
  • 个人博客网站取名做招投标有哪些网站
  • 途牛网网站建设评价中国建设银行网站特点
  • 国外装饰公司网站桂林百姓网
  • 利用电脑做网站wordpress主题云落
  • wordpress网站服务时间做直播哪个网站好
  • 响应式网站 英文衡水移动网站建设
  • 汉口网站建设 优帮云买毕业设计的网站
  • 海南做网站的公司友汇网站建设
  • 在线做爰 视频网站如何做品牌推广方案
  • 产品类网站模板网站静态界面挖取
  • vs开发网站开发教程系统炸了我成了系统
  • 南京企业制作网站wordpress wiki主题
  • 门户网站 模板之家域名解析好了怎么做网站
  • 官方静态网站模板网站开发市场成本
  • php网站开发视频教学邯郸企业做网站费用
  • 重庆博达建设集团网站国外外贸平台有哪些
  • 杂志媒体网站建设方案比较好网站制作公司
  • 什么网站可以找人做设计装修公司大全
  • 常州外贸网站建设mvc做网站前台代码
  • 视频门户网站建设服务器长沙景点大全 长沙景点排名