濮阳杆衣贸易有限公司

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

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

熱門標(biāo)簽:常州網(wǎng)絡(luò)外呼系統(tǒng)開發(fā) 400電話申請信用卡 安徽ai電話電銷機(jī)器人有效果嗎 走過哪個(gè)省地圖標(biāo)注 在哪里申請400電話 外呼系統(tǒng)電銷受騙 巫師三血與酒地圖標(biāo)注 萊西市地圖標(biāo)注 銷售語音電話機(jī)器人

MySQL窗口函數(shù)簡介

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

什么叫窗口?

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

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

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

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

一、mysql5.0

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



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

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

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



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

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

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)∫粋€(gè)別名方便前面調(diào)用。

結(jié)果如下:



二、mysql8.0

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

語句如下:

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版本,所以多學(xué)習(xí)一下吧。

總結(jié)

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

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

標(biāo)簽:黃石 煙臺(tái) 果洛 來賓 河北 鞍山 陽江 赤峰

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Mysql8.0使用窗口函數(shù)解決排序問題》,本文關(guān)鍵詞  Mysql8.0,使用,窗口,函數(shù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Mysql8.0使用窗口函數(shù)解決排序問題》相關(guān)的同類信息!
  • 本頁收集關(guān)于Mysql8.0使用窗口函數(shù)解決排序問題的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    岑溪市| 灵台县| 固镇县| 武陟县| 颍上县| 综艺| 眉山市| 大冶市| 和田县| 永康市| 白银市| 福鼎市| 临汾市| 淮阳县| 黑龙江省| 平乡县| 海阳市| 侯马市| 呼和浩特市| 韶关市| 咸丰县| 灯塔市| 湖州市| 明水县| 恩施市| 黄陵县| 区。| 镇远县| 武穴市| 洪泽县| 门源| 冷水江市| 郴州市| 安溪县| 盈江县| 临安市| 巫溪县| 凉城县| 上饶县| 麟游县| 武安市|