国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁(yè) > 數(shù)據(jù)庫(kù) > MySQL > 正文

Mysql 8 新特性 window functions 的作用

2024-07-24 13:15:08
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

MySQL 8.0的新特性包括:

  • 對(duì)Unicode 9.0的開(kāi)箱即用的完整支持
  • 支持窗口函數(shù)和遞歸SQL語(yǔ)法,這在以往是不可能或者很難才能編寫(xiě)這樣的查詢語(yǔ)句
  • 對(duì)原生JSON數(shù)據(jù)和文檔存儲(chǔ)功能的增強(qiáng)支持
  • MySQL 8.0的發(fā)布,跳過(guò)了多個(gè)版本號(hào)(從5.5開(kāi)始),由于6.0修改和7.0是用來(lái)保留做MySQL的集群版本,因此采用了8.0的版本號(hào)。

1. 問(wèn)題

Mysql 8.0.2 中新增加了一個(gè)主要功能 - 窗口函數(shù) window function

這個(gè)功能具體是解決什么問(wèn)題?下面先看一個(gè)SQL查詢的場(chǎng)景,看一下平時(shí)我們是怎么做的,然后再看一下如何使用窗口函數(shù)來(lái)更方便的解決

(1)準(zhǔn)備測(cè)試表和數(shù)據(jù)

建一個(gè)簡(jiǎn)單的電影信息表,字段有:

IDrelease_year(發(fā)行年份)category_id(所屬分類ID)rating(評(píng)分)CREATE TABLE films ( id int(11), release_year int(11), category_id int(11), rating decimal(3,2))

插入測(cè)試數(shù)據(jù)

insert into films2 values(1,2015,1,8.00),(2,2015,2,8.50),(3,2015,3,9.00),(4,2016,2,8.20),(5,2016,1,8.40),(6,2017,2,7.00);

整體形式如下

Mysql8,新特性,window,functions

(2)查詢需求

查詢每一年中的平均評(píng)分,要求每條記錄后面都顯示當(dāng)年的平均評(píng)分

例如 2015 年,有3條記錄,8.00, 8.50, 9.00 的平均分是 8.5,2016年有2條記錄,平均分是 8.3,2017年有1條記錄,平均分為 7.00

最終結(jié)果的形式如下:

Mysql8,新特性,window,functions

我們可以使用子查詢來(lái)計(jì)算各年的平均分,然后使用 join 把結(jié)果連接回去

SELECT f.id, f.release_year,  f.rating, years.year_avgFROM films fLEFT JOIN ( SELECT f.release_year,   AVG(rating) AS year_avg FROM films f GROUP BY f.release_year) years ON f.release_year = years.release_year

是不是有點(diǎn)復(fù)雜,下面看下窗口函數(shù)的處理方式

2. window functions 的解決方案

什么是 window functions

window functions 是對(duì)一組數(shù)據(jù)進(jìn)行計(jì)算,與使用 group by 時(shí)不同,不會(huì)進(jìn)行單行的結(jié)果輸出,而是與每條記錄相關(guān)聯(lián)

語(yǔ)法示例:

SELECTfunction_name OVER ( window_definition )FROM (...)

window_definition 是定義要計(jì)算的記錄集合,就像是一個(gè)小窗口,在整體數(shù)據(jù)集合上顯示出一部分

function_name 指定了對(duì)于窗口中的數(shù)據(jù)集合執(zhí)行什么計(jì)算

回頭看下上面的那個(gè)查詢,需要計(jì)算每部電影所在年份的所有電影平均評(píng)分,下面使用窗口函數(shù)來(lái)處理

SELECT f.id, f.release_year,  f.category_id, f.rating, AVG(rating) OVER  (PARTITION BY release_year) AS year_avgFROM films f

window_definition 部分使用了 PARTITION BY 從句,它告訴數(shù)據(jù)庫(kù)把結(jié)果數(shù)據(jù)集合分割成更小的部分,把 release_year 相同的放在一起,函數(shù) AVG(rating) 會(huì)對(duì)每個(gè)窗口數(shù)據(jù)進(jìn)行計(jì)算,然后把結(jié)果放到每一行中

Mysql8,新特性,window,functions

查詢示例1

計(jì)算每部電影在所屬年份中的評(píng)分排行位置

查詢語(yǔ)句

SELECT f.id, f.release_year,  f.category_id, f.rating, RANK() OVER (PARTITION BY release_year   ORDER BY rating DESC) AS year_rankFROM films f

window_definition 部分使用 PARTITION BY 來(lái)根據(jù) release_year 劃分窗口,使用 ORDER BY 在窗口內(nèi)排序

RANK() 函數(shù)可以返回一行數(shù)據(jù)在本窗口中的位置

查詢結(jié)果

Mysql8,新特性,window,functions

查詢示例2

查看每部電影在總排行榜中的位置

查詢語(yǔ)句

SELECT f.id, f.release_year,  f.category_id, f.rating, RANK() OVER (ORDER BY rating DESC)   AS general_rankFROM films f order by id

主語(yǔ)句中的 order by 保證了整個(gè)數(shù)據(jù)集的排序

window_definition 中沒(méi)有使用 PARTITION BY,那么就是把整個(gè)結(jié)果集合當(dāng)做一個(gè)窗口,ORDER BY 對(duì)窗口中的數(shù)據(jù)根據(jù) rating 做降序排序,把得分最高的放前面

RANK() 函數(shù)取得每條記錄在窗口中的位置

查詢結(jié)果

Mysql8,新特性,window,functions

3. 小結(jié)

窗口函數(shù)是 Mysql 8.0.2 中的高級(jí)特性,可以方便的執(zhí)行聚合計(jì)算,而不用對(duì)結(jié)果集進(jìn)行實(shí)際的聚合,大大增加了靈活性、可讀性,更便于維護(hù)

 

注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到MYSQL教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
在线视频福利| 国产写真视频在线观看| 91最新在线| 国产精品秘入口| 国产秀色在线www免费观看| 国产午夜精品久久久久免费视| 中文字幕免费中文| 91在线看片| 毛片在线视频| 国产l精品国产亚洲区在线观看| 在线播放国产区| 国产尤物视频| 国产欧美日韩专区| 97在线超碰| 狠狠干天天干| 国产福利三区| 男人天堂亚洲| а√天堂www在线а√天堂视频| 欧美日韩**字幕一区| 国产麻豆精品一区二区三区v视界| 青青免费在线视频| 国产在线拍揄自揄拍视频| 国产午夜在线视频| 青青草视频在线免费观看| 中文资源在线网| 国产在线第一页| 亚洲国产aⅴ精品| 国产婷婷视频在线| 色中文字幕在线| 国产一二三视频| 四虎a级欧美在线观看| 五月天亚洲激情| 日本动漫理论片在线观看网站| 日本高清不卡中文字幕| 国产精品18久久久久网站| 九九热免费视频| eeuss影影院www在线播放| 国产素人视频在线观看| 久久综合精品视频| 青草青在线视频| 一级二级三级在线观看| 精品麻豆国产| 亚洲视频日韩| 亚洲精品久久久成人| 在线观看中文字幕一区| 精精国产xxxx视频在线中文版 | 91美女在线| 国产一级二级在线| 天堂资源最新在线| 午夜av电影| 国产黄色小视频| 精品黄色免费中文电影在线播放| 国产95在线|亚洲| 精品久久亚洲一级α| 精品卡1卡2卡三卡免费网站| 在线视频中文字幕第一页| 在线观看av中文| 日本亚洲欧美| 国产女呦网站| 羞羞视频在线观看免费| 日本免费一二区| 久久精品亚洲7777影院| 国产中文字幕第一页| 最新av中文字幕| 国产经典自拍视频在线观看 | 在线视频中文字幕久| 亚洲成a人v欧美综合天堂麻豆| 日本欧洲一区| 国产一区精品| 国产精品入口麻豆免费观看| 精品国产福利一区二区在线| 日本电影全部在线观看网站视频| 五月婷婷开心综合| 在线看a视频| 午夜视频在线免费| 精品视频麻豆入口| 久久精品亚洲7777影院| 91免费日韩| 国产精品亚洲第五区在线| 136福利第一导航国产在线| 免费国产视频| 伊人资源视频在线| 国产图片综合| 国产在线第一页| 精品推荐国产麻豆剧传媒| 国产中文在线| 四虎成人精品在永久在线观看| 国产无遮挡在线视频免费观看| 亚洲欧洲成人| 91桃色在线| 国产精品va在线观看视色| 久久五月精品| 国产中文在线观看| 国产在线一二三| 亚洲一本大道| 在线观看免费黄色| 精品国内一区二区三区免费视频| 中文字幕在线观看播放| 黄色av网站在线免费观看| 一区二区精品区| 97一区二区三区| 国产黄色片大全| 国产视频三区| 最新中文字幕av专区| 国产中文字幕网| 国产在线高潮| 日本中文字幕在线播放| 国产美女视频网站| 福利视频网址导航| 国产永久免费高清在线观看视频| 成人超碰在线| 国精一区二区三区| 国产无套粉嫩白浆在线2022年 | 热99在线观看| 免费看的av| 国精一区二区三区| 国产一二三视频| 91涩漫在线观看c| 亚洲综合在线免费| 色吊丝av中文字幕| 国产九色视频| 国产高清一级片| 四虎久久影院| 午夜视频在线| 在线视频xx| 国产精品一品| 色吊丝av中文字幕| 国产九色视频| 精品av中文字幕在线毛片| 开心激情五月婷婷| 午夜视频在线| 日本视频二区| 国产精品久久精品牛牛影视| 在线观看国产福利视频| 91超碰国产在线| 伊人影院在线观看| 国产污视频在线| 成年网站免费入口在线观看| 亚洲最新永久观看在线| 中文字幕久热在线精品| 色吊丝av中文字幕| 国产黄色小视频| 亚洲欧美久久婷婷爱综合一区天堂| 久久精品无码一区二区日韩av| 国产一二三区精品视频| 欧美视频免费一区二区三区 | 国产美女视频一区二区三区| 国产黄色在线网站| 久久亚洲国产成人亚| 国产高清av在线| 国产理论片免费观看| 日本福利午夜视频在线| 精品国产白色丝袜高跟鞋| 天堂在线免费观看| 欧美啪啪精品| а√最新版在线天堂| 国产精品入口麻豆高清| 最新天堂资源在线| 午夜视频在线| 国产一二在线观看| 天天av天天爽| 中文字幕一区免费| 福利在线视频导航| 狠狠色综合久久婷婷| 国产尤物视频| 中文字幕亚洲免费| 91精品大全| 亚洲国产aⅴ精品| 日本成人网址| 黄色国产网站在线观看| 成人精品一区二区三区免费| av中文资源在线| 青青草在线免费观看| 超碰97国产精品人人cao| 亚洲成a人v欧美综合天堂麻豆| 在线中文字幕av| 亚洲精品乱码电影在线观看| 超碰免费在线播放| 九九热免费在线视频| 国产乱视频在线观看播放| 国产偷激情在线| 伊人免费在线| 欧美黑人乱大交ⅹxxxxx| 青青久在线视频免费观看| 国产在线麻豆精品| 国产黄色片在线播放| 99reav在线| 国产精品亚洲色图| 亚洲激情丁香| 国产色视频网站| 思思99精品视频在线观看| 国产一起色一起爱| 亚洲精品天堂在线观看| 中文字幕亚洲免费| eeuss影院在线观看第一页| 国产卡一卡二卡三| 怡红院av在线| 国产高清视频在线观看| 国产农村一级特黄α**毛片| 精品99又大又爽又硬少妇毛片|