日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MariaDB 窗口函数row_number、rank介绍

發(fā)布時(shí)間:2024/9/27 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MariaDB 窗口函数row_number、rank介绍 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?MariaDB 窗口函數(shù)row_number、rank介紹

窗口函數(shù)概述

MariaDB 自10.2.2即支持窗口函數(shù),這里介紹下部分這類函數(shù)的功能和區(qū)別,詳見下文的案例說明。1 ROW_NUMBER 按照分區(qū)生成的唯一序號 2 RANK 按照分區(qū)生成的排名,有重名的排名相同,不重名的按照記錄序號進(jìn)行排名? 3 DENSE_RANK 按照分區(qū)生成的排名,有重復(fù)的接重復(fù)的繼續(xù)排名 4 SUM 即按照分區(qū)的列求和 5 COUNT 即按照分區(qū)的列求數(shù) 6 MAX ?? ?即按照分區(qū)的列求最大值 7 MIN ?? ?即按照分區(qū)的列求最小值 8 AVG ?? ?即按照分區(qū)的列求平均值 9 VAR_POP ?? ?即按照分區(qū)的列求方差 10 STD ?? ?即按照分區(qū)的列求標(biāo)準(zhǔn)差,非SQL標(biāo)準(zhǔn)函數(shù) 11 STDDEV_POP ?? ?即按照分區(qū)的列求標(biāo)準(zhǔn)差 12 VAR_SAMP ?? ?即按照分區(qū)的列求樣本方差 13 STDDEV_SAMP ?? ?即按照分區(qū)的列求樣本標(biāo)準(zhǔn)差 14 PERCENT_RANK ?? ?所在(rank排名-1)/(總分區(qū)數(shù)-1) 15 CUME_DIST ?? ?所在row序號 / 總行號

代碼部分

CREATE TABLE score(course VARCHAR(10), score int, name varchar(10));INSERT INTO score VALUES ('數(shù)學(xué)', 60, '張三'),('數(shù)學(xué)', 60, '李四'),('數(shù)學(xué)', 70, '王二'),('數(shù)學(xué)', 55, '趙錢'),('英語', 60, '張三'),('英語', 70, '李四'),('語文', 83, '張三'),('語文', 92, '李四');SELECTcourse, score, name,ROW_NUMBER() OVER (PARTITION BY course ORDER BY score DESC) AS row_num,#按照分區(qū)生成的唯一序號RANK() OVER (PARTITION BY course ORDER BY score DESC) AS rank,#按照分區(qū)生成的排名,有重名的按照記錄序號進(jìn)行排名 DENSE_RANK() OVER (PARTITION BY course ORDER BY score DESC) AS dense_rank,#按照分區(qū)生成的排名,有重復(fù)的接重復(fù)的繼續(xù)排名SUM(score) OVER (PARTITION BY course) AS sum_score, #即按照分區(qū)的列求和COUNT(score) OVER (PARTITION BY course) AS cnt_score,#即按照分區(qū)的列求數(shù)MAX(score) OVER (PARTITION BY course) AS max_score,#即按照分區(qū)的列求最大值MIN(score) OVER (PARTITION BY course) AS min_score,#即按照分區(qū)的列求最小值A(chǔ)VG(score) OVER (PARTITION BY course) AS avg_score,#即按照分區(qū)的列求平均值VAR_POP(score) OVER (PARTITION BY course) AS VAR_POP_score,#即按照分區(qū)的列求方差STD(score) OVER (PARTITION BY course) AS std_score,#即按照分區(qū)的列求標(biāo)準(zhǔn)差,非SQL標(biāo)準(zhǔn)函數(shù)STDDEV_POP(score) OVER (PARTITION BY course) AS STDDEV_POP_score,#即按照分區(qū)的列求標(biāo)準(zhǔn)差VAR_SAMP(score) OVER (PARTITION BY course) AS VAR_SAMP_score,#即按照分區(qū)的列求樣本方差STDDEV_SAMP(score) OVER (PARTITION BY course) AS STDDEV_SAMP_score,#即按照分區(qū)的列求樣本標(biāo)準(zhǔn)差percent_rank() over (PARTITION BY course order by score DESC) as pct_rank,#所在(rank排名-1)/(總分區(qū)數(shù)-1)cume_dist() over (PARTITION BY course order by score DESC) as cume_dist # 所在row序號 / 總行號 FROM score -- ORDER BY course, score DESC;

驗(yàn)證結(jié)果

course score name row_num rank dense_rank sum_score cnt_score max_score min_score avg_score VAR_POP_score std_score STDDEV_POP_score VAR_SAMP_score STDDEV_SAMP_score pct_rank cume_dist 數(shù)學(xué) 70 王二 1 1 1 245 4 70 55 61.2500 29.6875 5.4486 5.4486 39.5833 6.2915 0 0.25 數(shù)學(xué) 60 李四 2 2 2 245 4 70 55 61.2500 29.6875 5.4486 5.4486 39.5833 6.2915 0.3333333333 0.75 數(shù)學(xué) 60 張三 3 2 2 245 4 70 55 61.2500 29.6875 5.4486 5.4486 39.5833 6.2915 0.3333333333 0.75 數(shù)學(xué) 55 趙錢 4 4 3 245 4 70 55 61.2500 29.6875 5.4486 5.4486 39.5833 6.2915 1 1 英語 70 李四 1 1 1 130 2 70 60 65.0000 25 5 5 50 7.0711 0 0.5 英語 60 張三 2 2 2 130 2 70 60 65.0000 25 5 5 50 7.0711 1 1 語文 92 李四 1 1 1 175 2 92 83 87.5000 20.25 4.5 4.5 40.5 6.364 0 0.5 語文 83 張三 2 2 2 175 2 92 83 87.5000 20.25 4.5 4.5 40.5 6.364 1 1

補(bǔ)充說明

方差計(jì)算公式

樣本方差計(jì)算公式

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的MariaDB 窗口函数row_number、rank介绍的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。