翻譯|使用教程|編輯:吳園園|2020-05-18 17:14:06.930|閱讀 589 次
概述:前N個(gè)查詢是按降序獲取按值排序的前幾條記錄的查詢。在今天的文章中,我們將確切學(xué)習(xí)如何按組構(gòu)造Top N查詢。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷售中 >>
相關(guān)鏈接:
Navicat Premium是一個(gè)可連接多種數(shù)據(jù)庫(kù)的管理工具,它可以讓你以單一程序同時(shí)連接到MySQL、Oracle及PostgreSQL數(shù)據(jù)庫(kù),讓管理不同類型的數(shù)據(jù)庫(kù)更加的方便。
點(diǎn)擊下載Navicat Premium最新試用版
前N個(gè)查詢是按降序獲取按值排序的前幾條記錄的查詢。通常,這些是使用TOP或LIMIT子句完成的。問(wèn)題是,前N個(gè)結(jié)果集被限制為表格中的最高值,而沒(méi)有任何分組。GROUP BY子句可以幫助解決這個(gè)問(wèn)題,但僅限于每個(gè)組的單項(xiàng)最高結(jié)果。如果您想要每個(gè)類別的前5名,GROUP BY本身將無(wú)濟(jì)于事。這并不意味著它無(wú)法完成。實(shí)際上,在今天的博客中,我們將確切學(xué)習(xí)如何按組構(gòu)造Top N查詢。
前N個(gè)查詢基礎(chǔ)知識(shí)
為了更好地理解“前N個(gè)查詢”,讓我們組成一個(gè),從中選擇運(yùn)行時(shí)間最長(zhǎng)的前5個(gè)電影。如果您不熟悉Sakila數(shù)據(jù)庫(kù),則它是一個(gè)MySQL數(shù)據(jù)庫(kù),其中包含許多與虛構(gòu)的視頻租賃商店有關(guān)的表,視圖和查詢。表格包括演員,電影,顧客,租金等。
按類別分組結(jié)果
GROUP BY子句將聚合函數(shù)應(yīng)用于一個(gè)或多個(gè)字段,以便數(shù)據(jù)與您指定的分組相關(guān)。就分組結(jié)果而言,這是向前邁出的一步,但是GROUP BY仍然有兩個(gè)限制:
它僅提供每個(gè)組的第一個(gè)結(jié)果(即行),而忽略其他結(jié)果,
這些列僅限于分組條件和匯總字段中包含的列。所有其他列均不可訪問(wèn)。
此查詢使用GROUP BY來(lái)顯示每個(gè)評(píng)級(jí)的最長(zhǎng)播放電影:
請(qǐng)注意,我們不能包含電影標(biāo)題,因?yàn)樗炔皇荊ROUP BY也不是聚合字段的一部分。
Windows函數(shù)速成課程
Windows函數(shù)中的術(shù)語(yǔ)“窗口”是指函數(shù)在其上運(yùn)行的行的集合,因?yàn)楹瘮?shù)使用窗口中行的值來(lái)計(jì)算返回的值。窗口內(nèi)的行集被匯總為一個(gè)值。
要在查詢中使用窗口函數(shù),必須使用OVER()子句定義窗口。它做兩件事:
一個(gè)查詢可以包括具有相同或不同窗口定義的多個(gè)窗口函數(shù)。
我們的查詢使用ROW_NUMBER()窗口函數(shù)。它為查詢的內(nèi)部窗口結(jié)果集中的每一行分配一個(gè)連續(xù)的整數(shù)。我們可以使用該值將每個(gè)評(píng)級(jí)的結(jié)果限制在前5名。這是通過(guò)將長(zhǎng)度按降序排列來(lái)完成的。
結(jié)論
在今天的文章中,我們學(xué)習(xí)了如何構(gòu)造一個(gè)查詢,以獲取Navicat Premium中每個(gè)類別的前5行。第15版增加了100多個(gè)增強(qiáng)功能,其中包括幾個(gè)新功能,可為您提供比以往更多的構(gòu)建,管理和維護(hù)數(shù)據(jù)庫(kù)的方式!有想要購(gòu)買(mǎi)正版授權(quán)的朋友,歡迎
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn
文章轉(zhuǎn)載自: