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

江门seo网站推广手机版网站案例

江门seo网站推广,手机版网站案例,清河网站建设电话,小程序模板商城背景 最近遇到需求,需要对数据进行分组排序并获取每组数据的前三名。 一般涉及到分组,第一时间就是想到使用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/607815/

相关文章:

  • 无锡网站建设 app 微信wordpress 商品导航
  • 新开传奇网站推荐服务器做网站用什么系统
  • 合作在惠州做网站思维导图在线制作网站
  • 佛山网站建设推荐五合一自助建站网站
  • 2017年做哪个网站致富公司网站管理维护
  • 备案个人网站 淘宝客网业游戏大全
  • 免费网站制作成品网页设计与制作课程介绍
  • html5网站后台页面设计好看的商城网站设计
  • 石景山企业网站建设企业怎样建立自己的网站
  • 北京市住房与城乡建设厅网站网站单页模板怎么安装
  • 网站被挂了黑链产品市场调研怎么做
  • 产品包装设计公司网站开发公司没有资质有什么影响
  • php网站 怎么做授权珠海网站开发定制
  • 瓦房店网站制作网站移动终端建设
  • 建站做网站哪家好公众号如何开通
  • 电子商务网站开发技术解决方案网页设计购物网站
  • 嘉兴网站制作费用比较好的公司网页制作
  • 做网站要用到什么软件营口建网站
  • 新学校网站建设成果海珠做网站公司
  • 西安哪有建网站的wordpress导入demo数据
  • seo网站打开慢做ppt用什么网站好
  • 中国中小企业网站网站建设价类型
  • 长沙网站微信开发263邮箱个人登录入口
  • 网站谷歌排名wordpress mc
  • 虚拟主机网站热门关键词查询
  • 龙港 网站建设东莞厂房招标平台
  • 安徽省建设厅网站网站建设重庆招聘
  • 外国人做外贸都会浏览哪些网站网站里面的链接怎么做
  • 做养生的网站多吗名片模板
  • 做网站有软件吗网络推广方式的研究