最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mysql8.0使用窗口函數(shù)解決排序問題

 更新時間:2020年01月07日 14:04:03   作者:追夢人++  
窗口的概念非常重要,它可以理解為記錄集合,窗口函數(shù)也就是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù)。這篇文章主要介紹了Mysql8.0使用窗口函數(shù)解決排序問題,需要的朋友可以參考下

MySQL窗口函數(shù)簡介

MySQL從8.0開始支持窗口函數(shù),這個功能在大多商業(yè)數(shù)據(jù)庫和部分開源數(shù)據(jù)庫中早已支持,有的也叫分析函數(shù)。

什么叫窗口?

窗口的概念非常重要,它可以理解為記錄集合,窗口函數(shù)也就是在滿足某種條件的記錄集合上執(zhí)行的特殊函數(shù)。對于每條記錄都要在此窗口內(nèi)執(zhí)行函數(shù),有的函數(shù)隨著記錄不同,窗口大小都是固定的,這種屬于靜態(tài)窗口;有的函數(shù)則相反,不同的記錄對應著不同的窗口,這種動態(tài)變化的窗口叫滑動窗口。

窗口函數(shù)和普通聚合函數(shù)也很容易混淆,二者區(qū)別如下:

聚合函數(shù)是將多條記錄聚合為一條;而窗口函數(shù)是每條記錄都會執(zhí)行,有幾條記錄執(zhí)行完還是幾條。

聚合函數(shù)也可以用于窗口函數(shù)中,這個后面會舉例說明。

一、mysql5.0

例如:我們要計算銷售人員的銷售額,結(jié)果按從高到低排序,查詢結(jié)果中要包含銷售的排名。


這是截取某商品訂單表的一部分數(shù)據(jù)

1、計算銷售人員的銷售額,結(jié)果按從高到低排序

這一部分我們可以直接使用group by對銷售人員分組,使用聚合函數(shù)sum對銷售額進行求和,結(jié)果對銷售額使用order by 排序就可以。語句如下:

SELECT sales_name, sum( profit ) FROM spm_order GROUP BY sales_name ORDER BY sum( profit ) DESC


查詢結(jié)果

2、如果查詢結(jié)果要包含銷售的排名。

在mysql5.0中, 我們要定義一個排序自增的變量,讓它實現(xiàn)自動+1來作為一個新的列。語句如下:

SET @rank = 0;
SELECT
A.*,
@rank := @rank + 1 AS rank_no
FROM
( SELECT sales_name, sum( profit ) FROM spm_order GROUP BY sales_name ORDER BY sum( profit ) DESC ) A

這里的:=就是賦值的意思 這里的A就是把子查詢?nèi)∫粋€別名方便前面調(diào)用。

結(jié)果如下:


在這里插入圖片描述

二、mysql8.0

對于這個問題,在mysql8.0中有專門的的窗口函數(shù)可以調(diào)用,復雜問題簡單化。

語句如下:

SELECT
sales_name,
sum( sales ),
row_number ( ) over ( ORDER BY sum( sales ) DESC ) AS ‘rank'
FROM
spm_order
GROUP BY
sales_name

結(jié)果:


在這里插入圖片描述

在這里我們使用了[ row_number() over () ] ,在over()里面直接寫上我們要排序的內(nèi)容。
工作中企業(yè)基本都是用的5.0版本,所以多學習一下吧。

總結(jié)

以上所述是小編給大家介紹的Mysql8.0使用窗口函數(shù)解決排序問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

相關(guān)文章

  • MySQL排序優(yōu)化詳細解析

    MySQL排序優(yōu)化詳細解析

    這篇文章主要介紹了MySQL排序優(yōu)化詳細解析,MySQL有兩種方式生成有序的結(jié)果:1.通過排序操作;2.按索引順序掃描,如果EXPLAIN出來的type列的值為"index",則說明使用了索引掃描來做排序,需要的朋友可以參考下
    2024-01-01
  • IntelliJ?IDEA?2024與MySQL?8連接以及driver問題解決辦法

    IntelliJ?IDEA?2024與MySQL?8連接以及driver問題解決辦法

    在IDE開發(fā)工具中也是可以使用mysql的,下面這篇文章主要給大家介紹了關(guān)于IntelliJ?IDEA?2024與MySQL?8連接以及driver問題解決辦法,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-09-09
  • MySQL Community Server壓縮包安裝配置方法

    MySQL Community Server壓縮包安裝配置方法

    這篇文章主要為大家詳細介紹了MySQL Community Server壓縮包安裝配置方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • MySQL中幾種常見的嵌套查詢詳解

    MySQL中幾種常見的嵌套查詢詳解

    最近在MySQL上做了點工作,發(fā)現(xiàn)很多人都在詢問MySQL嵌套查詢的問題,下面這篇文章主要給大家介紹了關(guān)于MySQL中幾種常見的嵌套查詢,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-08-08
  • 一文教你學會定位線上MySQL鎖超時問題

    一文教你學會定位線上MySQL鎖超時問題

    這篇文章主要介紹了一文教你學會定位線上MySQL鎖超時問題,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-08-08
  • MySQL存儲引擎InnoDB與Myisam的區(qū)別分析

    MySQL存儲引擎InnoDB與Myisam的區(qū)別分析

    INNODB會支持一些關(guān)系數(shù)據(jù)庫的高級功能,如事務功能和行級鎖,MYISAM不支持。MYISAM的性能更優(yōu),占用的存儲空間少。所以,選擇何種存儲引擎,視具體應用而定。
    2022-12-12
  • MySQL中數(shù)據(jù)視圖操作詳解

    MySQL中數(shù)據(jù)視圖操作詳解

    視圖是從一個或多個表(或視圖)導出的表。視圖一經(jīng)定義,就可以像表一樣被查詢、修改、刪除和更新。本文就來和大家講講MySQL數(shù)據(jù)視圖的一些基本操作,需要的可以參考一下
    2022-08-08
  • macOS 下的 MySQL 8.0.17 安裝與簡易配置教程圖解

    macOS 下的 MySQL 8.0.17 安裝與簡易配置教程圖解

    這篇文章主要介紹了macOS 下的 MySQL 8.0.17 安裝與簡易配置教程,本文圖文并茂給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-09-09
  • MySQL中Distinct和Group By語句的基本使用教程

    MySQL中Distinct和Group By語句的基本使用教程

    這篇文章主要介紹了MySQL中Distinct和Group By語句的基本使用教程,這里主要是針對查詢結(jié)果去重的用法,需要的朋友可以參考下
    2015-12-12
  • MySQL 行鎖和表鎖的含義及區(qū)別詳解

    MySQL 行鎖和表鎖的含義及區(qū)別詳解

    這篇文章主要介紹了MySQL 行鎖和表鎖的含義及區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08

最新評論

南漳县| 和平区| 叶城县| 沙坪坝区| 峡江县| 钦州市| 镇雄县| 吴堡县| 霍林郭勒市| 新兴县| 咸阳市| 滨海县| 五家渠市| 高陵县| 平遥县| 宁德市| 壤塘县| 景宁| 万盛区| 台州市| 正安县| 城市| 定襄县| 文成县| 江口县| 湛江市| 正阳县| 瑞金市| 五寨县| 黄骅市| 杭锦后旗| 金山区| 平定县| 镇沅| 武川县| 临安市| 新绛县| 邵东县| 沙河市| 无为县| 江达县|