婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 總結幾種MySQL中常見的排名問題

總結幾種MySQL中常見的排名問題

熱門標簽:申請400電話電話價格 廣東400企業電話申請流程 新鄉智能外呼系統好處 許昌外呼增值業務線路 地圖標注客戶付款 石家莊400電話辦理公司 宜賓全自動外呼系統廠家 咸陽防封電銷卡 臨沂做地圖標注

前言:

在某些應用場景中,我們經常會遇到一些排名的問題,比如按成績或年齡排名。排名也有多種排名方式,如直接排名、分組排名,排名有間隔或排名無間隔等等,這篇文章將總結幾種MySQL中常見的排名問題。

創建測試表

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);

# 查看下插入的數據
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.普通排名

按分數高低直接排名,從1開始,往下排,類似于row number。下面我們給出查詢語句及排名結果。

# 查詢語句
SELECT xuehao, score, @curRank := @curRank + 1 AS rank
FROM scores_tb, (
SELECT @curRank := 0
) r
ORDER BY score desc;

# 排序結果
+--------+-------+------+
| 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 |
+--------+-------+------+

上述查詢語句中,我們申明了一個變量 @curRank ,并將此變量初始化為0,查得一行將此變量加一,并以此作為排名。我們看到這類排名是沒間隔的并且有些分數相同但排名不同。

2.分數相同,名次相同,排名無間隔

# 查詢語句
SELECT xuehao, score, 
CASE
WHEN @prevRank = score THEN @curRank
WHEN @prevRank := score THEN @curRank := @curRank + 1
END AS rank
FROM scores_tb, 
(SELECT @curRank :=0, @prevRank := NULL) r
ORDER BY score desc;

# 排名結果
+--------+-------+------+
| 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.并列排名,排名有間隔

另外一種排名方式是相同的值排名相同,相同值的下一個名次應該是跳躍整數值,即排名有間隔。

# 查詢語句
SELECT xuehao, score, rank FROM
(SELECT xuehao, score,
@curRank := IF(@prevRank = score, @curRank, @incRank) AS rank, 
@incRank := @incRank + 1, 
@prevRank := score
FROM scores_tb, (
SELECT @curRank :=0, @prevRank := NULL, @incRank := 1
) r
ORDER BY score desc) s;
# 排名結果
+--------+-------+------+
| 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 |
+--------+-------+------+

上面介紹了三種排名方式,實現起來還是比較復雜的。好在MySQL8.0增加了窗口函數,使用內置函數可以輕松實現上述排名。

MySQL8.0 利用窗口函數實現排名

MySQL8.0中可以利用 ROW_NUMBER(),DENSE_RANK(),RANK() 三個窗口函數實現上述三種排名,需要注意的一點是as后的別名,千萬不要與前面的函數名重名,否則會報錯,下面給出這三種函數實現排名的案例:

# 三條語句對于上面三種排名
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;

# 一條語句也可以查詢出不同排名
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);

# 排名結果
+--------+-------+-------+---------+---+
| 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 |
+--------+-------+-------+---------+---+

總結:

本文給出三種不同場景下實現統計排名的SQL,可以根據不同業務需求選取合適的排名方案。對比MySQL8.0,發現利用窗口函數可以更輕松實現排名,其實業務需求遠遠比我們舉的示例要復雜許多,用SQL實現此類業務需求還是需要慢慢積累的。

以上就是總結幾種MySQL中常見的排名問題的詳細內容,更多關于MySQL 排名的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • MYSQL實現排名及查詢指定用戶排名功能(并列排名功能)實例代碼
  • Mysql排序獲取排名的實例代碼
  • MySQL頁面訪問統計及排名情況
  • MySQL中給自定義的字段查詢結果添加排名的方法
  • mysql分組取每組前幾條記錄(排名) 附group by與order by的研究

標簽:日照 貴州 鷹潭 鎮江 臺灣 北京 阜新 合肥

巨人網絡通訊聲明:本文標題《總結幾種MySQL中常見的排名問題》,本文關鍵詞  總結,幾種,MySQL,中,常見,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《總結幾種MySQL中常見的排名問題》相關的同類信息!
  • 本頁收集關于總結幾種MySQL中常見的排名問題的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产欧美一区二区精品性色 | 久久精品视频在线免费观看| 国产午夜精品在线观看| 久久精品国产亚洲高清剧情介绍| 欧美日韩一区二区在线观看| 亚洲a一区二区| 欧美一二区视频| 天天操天天综合网| 日韩视频在线永久播放| 久久精品国产99国产精品| 日韩三级视频中文字幕| 日本欧美一区二区三区| 国产日韩欧美一区二区三区综合| 成人一区二区三区视频 | 亚洲乱码日产精品bd| 91视频在线看| 日日噜噜夜夜狠狠视频欧美人| 日韩一区二区三区视频在线| 国内精品视频一区二区三区八戒| 久久日韩粉嫩一区二区三区| 99视频一区二区三区| 亚洲成a人片在线观看中文| 精品国产在天天线2019| 国产风韵犹存在线视精品| 亚洲天堂成人网| 欧美日韩黄色影视| 国产一区美女在线| 亚洲精品日日夜夜| 欧美精品一区二区三区蜜桃视频| 91在线精品一区二区| 欧美激情在线一区二区| 欧美片在线播放| 午夜精品福利一区二区三区av| 中文字幕乱码日本亚洲一区二区 | 日本成人中文字幕| 中文字幕二三区不卡| 日韩欧美国产一区二区三区| 91麻豆精品秘密| 91黄色免费版| 成人综合激情网| 久久成人羞羞网站| 午夜视频一区二区三区| 国产网站一区二区三区| 日韩欧美色电影| 欧美日韩精品二区第二页| 99re亚洲国产精品| 国产一区二区三区精品欧美日韩一区二区三区| 欧美私人免费视频| voyeur盗摄精品| 蜜臀91精品一区二区三区| 亚洲人午夜精品天堂一二香蕉| 久久久五月婷婷| 欧美日韩视频在线观看一区二区三区| 粉嫩久久99精品久久久久久夜| 偷拍亚洲欧洲综合| 2022国产精品视频| 日韩精品一区二区在线| 99在线视频精品| 国产一区二区剧情av在线| 亚洲国产日韩精品| 欧美国产日本韩| 中文字幕欧美一区| ●精品国产综合乱码久久久久| 日本一区二区三区高清不卡| 欧美电视剧在线看免费| 欧美美女视频在线观看| 欧美另类高清zo欧美| 91精品国产色综合久久ai换脸| 欧美一级黄色大片| 久久综合久久综合亚洲| 亚洲国产精品精华液ab| 亚洲欧洲99久久| 亚洲另类在线视频| 天天操天天干天天综合网| 蜜臀久久99精品久久久久宅男| 精品一区二区三区久久| 韩国毛片一区二区三区| 国产一区二区三区四区五区入口 | 久久蜜臀精品av| 91丨porny丨国产入口| 欧美色老头old∨ideo| 欧美挠脚心视频网站| 精品美女被调教视频大全网站| 久久免费偷拍视频| 亚洲乱码日产精品bd| 奇米四色…亚洲| 成人性生交大片免费看视频在线| 国产91露脸合集magnet| 色诱亚洲精品久久久久久| 在线电影欧美成精品| 久久久久久久久蜜桃| 亚洲视频资源在线| 欧美a一区二区| 成人伦理片在线| 欧美日韩精品欧美日韩精品一综合| 日韩一级完整毛片| 国产精品少妇自拍| 日韩av在线播放中文字幕| 成人免费视频国产在线观看| 欧美酷刑日本凌虐凌虐| 国产精品久久福利| 精品一区二区三区香蕉蜜桃| 国产精品自在欧美一区| 日本久久电影网| 精品久久久久99| 亚洲一区二区三区四区五区黄 | 欧美另类z0zxhd电影| 26uuu国产一区二区三区| 欧美国产精品v| 日本伊人色综合网| 成人午夜精品在线| 欧美一级日韩免费不卡| 亚洲欧美精品午睡沙发| 久久精品99国产精品日本| 色婷婷综合久色| 欧美一区二区三区在线观看视频| 日韩欧美色电影| 亚洲精品中文在线影院| 国内成人免费视频| 欧美视频一二三区| 中文字幕一区二区在线观看| 天天av天天翘天天综合网色鬼国产| 成人午夜看片网址| 日韩免费一区二区| 中文字幕亚洲一区二区av在线| 久久超碰97中文字幕| 欧美日韩成人在线| 一区二区三区在线免费播放| 国产 欧美在线| 午夜av区久久| 制服丝袜日韩国产| 精品国产亚洲在线| 综合av第一页| 不卡一区中文字幕| www.一区二区| 亚洲欧洲一区二区在线播放| 国产成人综合视频| www精品美女久久久tv| 视频一区视频二区中文| 亚洲一区在线观看免费 | 色综合一区二区| 欧美国产精品劲爆| 国产成人免费9x9x人网站视频| 亚洲免费av网站| www.av精品| 日韩毛片一二三区| 欧美mv日韩mv国产网站| 日本不卡一区二区三区高清视频| 亚洲精品日日夜夜| 狠狠色丁香久久婷婷综| 久久一日本道色综合| 波多野结衣精品在线| 日韩国产精品久久久| 成人性色生活片免费看爆迷你毛片| 国产精品久久久久久久久久久免费看| 韩国毛片一区二区三区| 亚洲女同ⅹxx女同tv| 国产乱一区二区| 天天操天天色综合| 亚洲免费视频中文字幕| 蜜桃视频一区二区| 久久婷婷一区二区三区| 在线亚洲免费视频| 懂色av一区二区三区免费看| 中文字幕一区在线观看视频| 日产精品久久久久久久性色| 91网址在线看| 亚洲国产一区二区在线播放| 777xxx欧美| 国产又粗又猛又爽又黄91精品| 日韩欧美资源站| 日本久久一区二区| 色综合久久中文综合久久97| 日韩一级片在线观看| 中文av一区二区| 午夜精品一区二区三区电影天堂| youjizz久久| 在线电影国产精品| 亚洲国产另类av| 日本高清成人免费播放| 欧美日韩视频在线第一区 | 成人免费福利片| 久久成人18免费观看| 欧美日韩一区高清| 中文字幕一区二区三区在线不卡| 亚洲天堂精品在线观看| 欧美日韩国产综合一区二区| 国产喂奶挤奶一区二区三区| 国产毛片精品一区| 久久久国产精品不卡| 色狠狠av一区二区三区| www.色精品| 91蝌蚪porny| 处破女av一区二区| 成人黄色在线看| 国产成人精品网址| 99精品黄色片免费大全| 91视频在线观看免费| 日本久久一区二区| 91福利视频在线|