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