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

主頁 > 知識庫 > Mysql8.0使用窗口函數解決排序問題

Mysql8.0使用窗口函數解決排序問題

熱門標簽:常州網絡外呼系統開發 400電話申請信用卡 安徽ai電話電銷機器人有效果嗎 走過哪個省地圖標注 在哪里申請400電話 外呼系統電銷受騙 巫師三血與酒地圖標注 萊西市地圖標注 銷售語音電話機器人

MySQL窗口函數簡介

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

什么叫窗口?

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

窗口函數和普通聚合函數也很容易混淆,二者區別如下:

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

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

一、mysql5.0

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



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

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

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



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

在mysql5.0中, 我們要定義一個排序自增的變量,讓它實現自動+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就是把子查詢取一個別名方便前面調用。

結果如下:



二、mysql8.0

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

語句如下:

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

結果:



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

總結

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

您可能感興趣的文章:
  • MySQL8.0窗口函數入門實踐及總結
  • PostgreSQL數據庫中窗口函數的語法與使用
  • SQL2005 學習筆記 窗口函數(OVER)
  • SQL 窗口函數實現高效分頁查詢的案例分析

標簽:黃石 煙臺 果洛 來賓 河北 鞍山 陽江 赤峰

巨人網絡通訊聲明:本文標題《Mysql8.0使用窗口函數解決排序問題》,本文關鍵詞  Mysql8.0,使用,窗口,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Mysql8.0使用窗口函數解決排序問題》相關的同類信息!
  • 本頁收集關于Mysql8.0使用窗口函數解決排序問題的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 阿瓦提县| 法库县| 庆城县| 怀化市| 莱阳市| 永寿县| 太仆寺旗| 囊谦县| 朔州市| 河池市| 西乡县| 纳雍县| 西华县| 镶黄旗| 巫溪县| 安陆市| 绥德县| 四川省| 绥江县| 迁西县| 涿州市| 麦盖提县| 忻州市| 闸北区| 宜阳县| 永泰县| 子洲县| 农安县| 临夏县| 洪湖市| 讷河市| 凤山市| 舒兰市| 齐河县| 马公市| 五大连池市| 万宁市| 巧家县| 孝感市| 彭阳县| 夹江县|