日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

總結(jié)幾種MySQL中常見(jiàn)的排名問(wèn)題

瀏覽:294日期:2023-10-12 08:09:16

前言:

在某些應(yīng)用場(chǎng)景中,我們經(jīng)常會(huì)遇到一些排名的問(wèn)題,比如按成績(jī)或年齡排名。排名也有多種排名方式,如直接排名、分組排名,排名有間隔或排名無(wú)間隔等等,這篇文章將總結(jié)幾種MySQL中常見(jiàn)的排名問(wèn)題。

創(chuàng)建測(cè)試表

create table scores_tb ( id int auto_increment primary key, xuehao int not null, score int not null) ENGINE=InnoDB DEFAULT CHARSET=utf8;insert into scores_tb (xuehao,score) values (1001,89),(1002,99),(1003,96),(1004,96),(1005,92),(1006,90),(1007,90),(1008,94);# 查看下插入的數(shù)據(jù)mysql> select * from scores_tb;+----+--------+-------+| id | xuehao | score |+----+--------+-------+| 1 | 1001 | 89 || 2 | 1002 | 99 || 3 | 1003 | 96 || 4 | 1004 | 96 || 5 | 1005 | 92 || 6 | 1006 | 90 || 7 | 1007 | 90 || 8 | 1008 | 94 |+----+--------+-------+

1.普通排名

按分?jǐn)?shù)高低直接排名,從1開(kāi)始,往下排,類(lèi)似于row number。下面我們給出查詢(xún)語(yǔ)句及排名結(jié)果。

# 查詢(xún)語(yǔ)句SELECT xuehao, score, @curRank := @curRank + 1 AS rankFROM scores_tb, (SELECT @curRank := 0) rORDER BY score desc;# 排序結(jié)果+--------+-------+------+| xuehao | score | rank |+--------+-------+------+| 1002 | 99 | 1 || 1003 | 96 | 2 || 1004 | 96 | 3 || 1008 | 94 | 4 || 1005 | 92 | 5 || 1006 | 90 | 6 || 1007 | 90 | 7 || 1001 | 89 | 8 |+--------+-------+------+

上述查詢(xún)語(yǔ)句中,我們申明了一個(gè)變量 @curRank ,并將此變量初始化為0,查得一行將此變量加一,并以此作為排名。我們看到這類(lèi)排名是沒(méi)間隔的并且有些分?jǐn)?shù)相同但排名不同。

2.分?jǐn)?shù)相同,名次相同,排名無(wú)間隔

# 查詢(xún)語(yǔ)句SELECT xuehao, score, CASEWHEN @prevRank = score THEN @curRankWHEN @prevRank := score THEN @curRank := @curRank + 1END AS rankFROM scores_tb, (SELECT @curRank :=0, @prevRank := NULL) rORDER BY score desc;# 排名結(jié)果+--------+-------+------+| xuehao | score | rank |+--------+-------+------+| 1002 | 99 | 1 || 1003 | 96 | 2 || 1004 | 96 | 2 || 1008 | 94 | 3 || 1005 | 92 | 4 || 1006 | 90 | 5 || 1007 | 90 | 5 || 1001 | 89 | 6 |+--------+-------+------+

3.并列排名,排名有間隔

另外一種排名方式是相同的值排名相同,相同值的下一個(gè)名次應(yīng)該是跳躍整數(shù)值,即排名有間隔。

# 查詢(xún)語(yǔ)句SELECT xuehao, score, rank FROM(SELECT xuehao, score,@curRank := IF(@prevRank = score, @curRank, @incRank) AS rank, @incRank := @incRank + 1, @prevRank := scoreFROM scores_tb, (SELECT @curRank :=0, @prevRank := NULL, @incRank := 1) rORDER BY score desc) s;# 排名結(jié)果+--------+-------+------+| xuehao | score | rank |+--------+-------+------+| 1002 | 99 | 1 || 1003 | 96 | 2 || 1004 | 96 | 2 || 1008 | 94 | 4 || 1005 | 92 | 5 || 1006 | 90 | 6 || 1007 | 90 | 6 || 1001 | 89 | 8 |+--------+-------+------+

上面介紹了三種排名方式,實(shí)現(xiàn)起來(lái)還是比較復(fù)雜的。好在MySQL8.0增加了窗口函數(shù),使用內(nèi)置函數(shù)可以輕松實(shí)現(xiàn)上述排名。

MySQL8.0 利用窗口函數(shù)實(shí)現(xiàn)排名

MySQL8.0中可以利用 ROW_NUMBER(),DENSE_RANK(),RANK() 三個(gè)窗口函數(shù)實(shí)現(xiàn)上述三種排名,需要注意的一點(diǎn)是as后的別名,千萬(wàn)不要與前面的函數(shù)名重名,否則會(huì)報(bào)錯(cuò),下面給出這三種函數(shù)實(shí)現(xiàn)排名的案例:

# 三條語(yǔ)句對(duì)于上面三種排名select xuehao,score, ROW_NUMBER() OVER(order by score desc) as row_r from scores_tb;select xuehao,score, DENSE_RANK() OVER(order by score desc) as dense_r from scores_tb;select xuehao,score, RANK() over(order by score desc) as r from scores_tb;# 一條語(yǔ)句也可以查詢(xún)出不同排名SELECT xuehao,score, ROW_NUMBER() OVER w AS ’row_r’, DENSE_RANK() OVER w AS ’dense_r’, RANK() OVER w AS ’r’FROM `scores_tb`WINDOW w AS (ORDER BY `score` desc);# 排名結(jié)果+--------+-------+-------+---------+---+| xuehao | score | row_r | dense_r | r |+--------+-------+-------+---------+---+| 1002 | 99 | 1 | 1 | 1 || 1003 | 96 | 2 | 2 | 2 || 1004 | 96 | 3 | 2 | 2 || 1008 | 94 | 4 | 3 | 4 || 1005 | 92 | 5 | 4 | 5 || 1006 | 90 | 6 | 5 | 6 || 1007 | 90 | 7 | 5 | 6 || 1001 | 89 | 8 | 6 | 8 |+--------+-------+-------+---------+---+

總結(jié):

本文給出三種不同場(chǎng)景下實(shí)現(xiàn)統(tǒng)計(jì)排名的SQL,可以根據(jù)不同業(yè)務(wù)需求選取合適的排名方案。對(duì)比MySQL8.0,發(fā)現(xiàn)利用窗口函數(shù)可以更輕松實(shí)現(xiàn)排名,其實(shí)業(yè)務(wù)需求遠(yuǎn)遠(yuǎn)比我們舉的示例要復(fù)雜許多,用SQL實(shí)現(xiàn)此類(lèi)業(yè)務(wù)需求還是需要慢慢積累的。

以上就是總結(jié)幾種MySQL中常見(jiàn)的排名問(wèn)題的詳細(xì)內(nèi)容,更多關(guān)于MySQL 排名的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产成人精品亚洲线观看| 视频一区二区欧美| 欧美另类中文字幕| 日韩高清不卡一区| 国产人成精品一区二区三| 免费久久99精品国产| 免费一级片91| 视频在线观看一区| 天堂va欧美ⅴa亚洲va一国产| 午夜天堂精品久久久久| 亚洲精品乱码| 国产调教精品| 成人在线免费观看网站| 精品欧美一区二区三区在线观看| 日韩免费久久| 日本精品在线中文字幕| 激情综合自拍| 首页国产欧美久久| 国产精品一区二区三区av麻| 国产精品免费不| 美女久久久久久| 精品91福利视频| 久久精品高清| 视频一区二区三区中文字幕| 欧美视频一区| 在线看片福利| 免费中文字幕日韩欧美| 国产伦乱精品| 久久免费国产| 免费成人性网站| 国产日韩高清一区二区三区在线 | 国产激情在线播放| 久久精品国内一区二区三区水蜜桃| 国产亚洲在线观看| 国产欧美一区二区色老头| 国产h片在线观看| 欧美~级网站不卡| 亚洲欧洲免费| 精品一区二区三区中文字幕| 国精品一区二区三区| 午夜电影一区| 免费观看亚洲| 天堂精品久久久久| 精品视频一区二区三区在线观看 | 九色精品91| 日韩黄色在线观看| 成人va天堂| 日韩欧美中文字幕电影| 日韩av自拍| 蜜臀久久99精品久久久画质超高清 | 日韩激情中文字幕| 中文字幕在线免费观看视频| 视频一区二区三区在线| 成人日韩av| 蜜桃久久久久久| 国产一区二区三区日韩精品| 六月天综合网| 黄色欧美在线| 综合日韩在线| 久久精品国语| 国产精品色婷婷在线观看| 亚洲国产专区校园欧美| 国产日韩欧美中文在线| 欧美日韩第一| 国产精品极品| 在线观看视频免费一区二区三区| 久久久久久自在自线| 亚洲欧美专区| 久久亚洲在线| 精品国产午夜肉伦伦影院| 免费成人av在线播放| 91亚洲国产高清| 日韩二区在线观看| 欧美精品一区二区久久| 老司机精品视频在线播放| 国产一区二区高清| 蜜臀国产一区| 欧美aaaaaa午夜精品| 久久xxxx| 精品国产亚洲一区二区在线观看| 美女久久一区| 色婷婷精品视频| 国产精品黄色片| 视频精品一区二区| 久久精品主播| 国产成人免费| 国产精品自在| 中文字幕一区日韩精品| 999久久久免费精品国产| 老司机免费视频一区二区| 亚洲一级大片| 高清在线一区| 亚洲人成在线影院| 国内精品福利| 国产一区二区三区黄网站| 国产亚洲在线观看| 国产第一亚洲| 国产美女久久| 91欧美日韩在线| 免费观看在线综合| 亚洲欧美日本视频在线观看| 人人精品亚洲| аⅴ资源天堂资源库在线| 免费在线欧美黄色| 欧美日韩在线精品一区二区三区激情综合| 欧美日韩国产亚洲一区| 另类中文字幕国产精品| 日韩精品不卡一区二区| 国产va在线视频| 麻豆精品一区二区综合av| 欧美精品国产| 日韩不卡一区二区| 日本成人在线一区| 日韩精品视频一区二区三区| 免费人成在线不卡| 日韩影院免费视频| 免费观看在线综合| 深夜福利亚洲| 亚洲bt欧美bt精品777| 99riav国产精品| 国产午夜久久| 蘑菇福利视频一区播放| 水蜜桃久久夜色精品一区的特点| 国产免费成人| 在线视频亚洲| 一区二区三区四区日韩| 亚洲图片久久| 日本va欧美va瓶| 久久国产三级| 国产精品玖玖玖在线资源| 国产精品国产三级在线观看| 欧美成人一二区| 动漫av一区| 97在线精品| 欧美日韩在线播放视频| 蜜臀av免费一区二区三区| 99国产精品视频免费观看一公开| 亚洲一区二区三区四区五区午夜| 99亚洲视频| 首页欧美精品中文字幕| 日韩精品第二页| 久久不见久久见中文字幕免费| 国产福利一区二区精品秒拍 | 蜜桃久久久久| 97精品中文字幕| 亚洲电影在线一区二区三区| 99视频在线精品国自产拍免费观看| 久久国产成人| 国产亚洲欧美日韩精品一区二区三区 | 激情综合在线| 一区二区三区四区在线观看国产日韩| 日韩不卡在线观看日韩不卡视频 | 久久99国产精品视频| 国产中文在线播放| 欧美.日韩.国产.一区.二区 | 欧美成人基地| 六月丁香综合| 久久99性xxx老妇胖精品| 日韩在线第七页| 国产亚洲在线观看| 国产欧美欧美| 久久精品青草| 亚久久调教视频| 91亚洲国产高清| 免费视频久久| 国产精品成人国产| 日本免费一区二区三区四区| 免播放器亚洲| 美女久久久久久| 99国产精品99久久久久久粉嫩| 青青草国产精品亚洲专区无| 久久亚洲黄色| 免费不卡中文字幕在线| 日韩精品视频在线看| 极品av在线| 色综合视频一区二区三区日韩| 日韩激情视频网站| av一区在线| 日韩欧美中文字幕在线视频| av综合电影网站| 日本在线成人| 日韩在线第七页| 人人精品久久| 99热精品久久| 欧美日韩91| 亚洲高清毛片| 久久激情综合网| 影视先锋久久| 国产日产精品_国产精品毛片 | 日韩免费小视频| 日韩精品亚洲专区在线观看| 日韩一区二区三区免费播放| 亚洲精品自拍| 99久久激情| 国产精品分类| 亚洲激情av| 在线亚洲人成| 国产精品大片免费观看| 久久亚洲一区| 亚洲综合在线电影|