成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

還在手動編寫GROUPBY子句?SQLPrompt可以自

SQL Prompt是一款實用的SQL語法提示工具。SQL Prompt根據(jù)數(shù)據(jù)庫的對象名稱、語法和代碼片段自動進行檢索,為用戶提供合適的代碼選擇。自動腳本設置使代碼簡單易讀——當開發(fā)者不大熟悉腳本時尤其有用。SQL Prompt安裝即可使用,能大幅提高編碼效率。

成都創(chuàng)新互聯(lián)公司專注于平房網(wǎng)站建設服務及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供平房營銷型網(wǎng)站建設,平房網(wǎng)站制作、平房網(wǎng)頁設計、平房網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務,打造平房網(wǎng)絡公司原創(chuàng)品牌,更為您提供平房網(wǎng)站排名全網(wǎng)營銷落地服務。

編寫GROUP BY子句對于SQL程序員來說,是一種非常常見但又單調(diào)乏味的活動。本文描述SQL Prompt將為您填充它,查詢返回所有非聚合列。

“你見過這個用非聚合列自動填充GROUP BY的新功能嗎?”我的同事在安裝了一個新版本的SSMS不久后大聲說道。我沒有,但我很好奇。在我的職業(yè)生涯中,我寫過成千上萬的匯總查詢,所以這聽起來好像可以節(jié)省我一些時間。

我在SSMS中搜索了我用于測試SQL Server新版本的虛擬機,但是沒有找到。事實證明,我的測試虛擬機沒有安裝SQL Prompt,畢竟這不是新的SSMS功能,而是那些“隱藏的”SQL Prompt增強的功能之一。

手動填寫GROUP BY

假設我需要在WideWorldImporters數(shù)據(jù)庫上寫一個查詢,以獲得已訂購的項目總和,按郵政編碼以及客戶帳戶開立的年份分組。

按照典型的方式,我首先填寫表格及其連接條件。我輸入“or”來查找與訂單相關的表格,甚至不必知道它們存在于Sales模式中。

還在手動編寫GROUP BY子句?SQL Prompt可以自

我擴展SELECT列表,最初只返回我需要使用的基本行。我應用我首選的提示格式樣式,查詢看起來像這樣:

SELECT?Customers.DeliveryPostalCode?AS?PostalCode,?
?????????YEAR(Customers.AccountOpenedDate)?AS?AccountOpenYear,?
?????????OrderLines.Quantity
??FROM???Sales.OrderLines
?????????JOIN?Sales.Orders
?????????????ON?Orders.OrderID?=?OrderLines.OrderID
?????????JOIN?Sales.Customers
?????????????ON?Customers.CustomerID?=?Orders.CustomerID;

查詢返回幾十萬行,其中一小部分樣本如下所示:

PostalCode?AccountOpenYear?Quantity
??----------?---------------?-----------
??90398??????2013????????????7
??90005??????2013????????????7
??90313??????2013????????????7
??90434??????2013????????????7

我想查看總訂單數(shù)量,按客戶交貨郵政編碼和客戶開立帳戶的年份,因此最終SELECT清單如下所示:

SELECT?Customers.DeliveryPostalCode?AS?PostalCode,
?????????YEAR(Customers.AccountOpenedDate)?AS?AccountOpenYear,
?????????SUM(OrderLines.Quantity)?AS?TotalOrderQuantity

這只是一個GROUP BY子句,通常,我只是復制并粘貼SELECT子句中的非聚合列,并用GROUP BY替換SELECT:

GROUP?BY?Customers.DeliveryPostalCode?AS?PostalCode,
?????????YEAR(Customers.AccountOpenedDate)?AS?AccountOpenYear

最后,我只是刪掉別名來給出這樣的最終查詢:

SELECT?Customers.DeliveryPostalCode?AS?PostalCode,?
?????????YEAR(Customers.AccountOpenedDate)?AS?AccountOpenYear,?
?????????OrderLines.Quantity
??FROM???Sales.OrderLines
?????????JOIN?Sales.Orders
?????????????ON?Orders.OrderID?=?OrderLines.OrderID
?????????JOIN?Sales.Customers
?????????????ON?Customers.CustomerID?=?Orders.CustomerID
??GROUP?BY?Customers.DeliveryPostalCode,
?????????YEAR(Customers.AccountOpenedDate;

總而言之,這是一個繁瑣的過程。

使用SQL提示符自動填充GROUP BY

與SQL語句的所有子句一樣,SQL Prompt幫助填寫GROUP BY;我以前沒注意過!只需在鍵入GROUP BY的子句后按空格鍵,如圖所示。

還在手動編寫GROUP BY子句?SQL Prompt可以自

選擇所有非聚合列,它將使用以下列表達式填充GROUP BY子句:

GROUP?BY?YEAR(Customers.AccountOpenedDate),
???????????Customers.DeliveryPostalCode;

或者,如上圖所示,您可以單獨選擇非聚合列。如果要添加其他分組,例如按客戶打開帳戶的月份,只需添加MONTH(Customers.AccountOpenedDate) AS AccountOpenMonth到SELECT子句,刪除現(xiàn)有GROUP BY子句,然后自動重新填充列表達式。該GROUP BY子句現(xiàn)在看起來像這樣:

GROUP?BY?YEAR(Customers.AccountOpenedDate),
???????????MONTH(Customers.AccountOpenedDate),
???????????Customers.DeliveryPostalCode;

在某些情況下,您的SELECT子句中的值可能在聚合函數(shù)中,但不需要在GROUP BY子句中。例如,假設我們更改SELECT查詢以包含兩個新列,在以下代碼中以粗體文本突出顯示。一個是文字值,另一個是對現(xiàn)有列中的列進行計算GROUP BY:

SELECT?Customers.DeliveryPostalCode?AS?PostalCode,?
?????????YEAR(Customers.AccountOpenedDate)?AS?AccountOpenYear,?
?????????MONTH(Customers.AccountOpenedDate)?AS?AccountOpenMonth,
?????????<strong>1?AS?Value,</strong>
?????????<strong>YEAR(Customers.AccountOpenedDate)?-?1?AS?PreviousAccountOpenYear,</strong>
?????????SUM(OrderLines.Quantity)?AS?TotalOrderQuantity?
??FROM???Sales.OrderLines
?????????JOIN?Sales.Orders
?????????????ON?Orders.OrderID?=?OrderLines.OrderID
?????????JOIN?Sales.Customers
?????????????ON?Customers.CustomerID?=?Orders.CustomerID
??GROUP?BY?YEAR(Customers.AccountOpenedDate),
???????????MONTH(Customers.AccountOpenedDate),
???????????Customers.DeliveryPostalCode;

此查詢將按原樣執(zhí)行,因為我們不需要在文字上進行分組,也不需要對僅使用GROUP BY中已有的列或表達式的表達式進行分組。

但是,如果我們刪除現(xiàn)有GROUP BY子句,并讓SQL Prompt自動填充它,那么它看起來會略有不同:

GROUP?BY?YEAR(Customers.AccountOpenedDate),
???????????MONTH(Customers.AccountOpenedDate),
??<strong>?????????YEAR(Customers.AccountOpenedDate)?-?1,</strong>
???????????Customers.DeliveryPostalCode

這是一種罕見的情況,幾乎肯定不會對查詢的執(zhí)行造成任何影響,但要注意這一點。

這是我們完成的查詢,但如果您想訂購輸出,請嘗試輸入ORDER BY,看看會出現(xiàn)什么!

結論

一旦安裝了SQL Prompt,您就會立即意識到它是如何增強SSMS的本機智能感知功能的,但這可能使您無法看到隱藏在工具各個部分中的許多其他功能。通常情況下,我只是偶然發(fā)現(xiàn)它們,或者是同事提醒我的時候。這只是我發(fā)現(xiàn)自己一旦意識到它的存在就經(jīng)常使用的一個功能的另一個精華!

編寫GROUP BY對于SQL程序員來說,是一種非常常見但又乏味的活動。我總是說,用軟件取代那個乏味的東西。

網(wǎng)站題目:還在手動編寫GROUPBY子句?SQLPrompt可以自
標題網(wǎng)址:http://jinyejixie.com/article4/ipehoe.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供微信公眾號、移動網(wǎng)站建設、網(wǎng)站維護、網(wǎng)站改版、網(wǎng)站營銷、ChatGPT

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營
长宁区| 增城市| 新丰县| 峨山| 池州市| 张家口市| 江城| 南和县| 息烽县| 旌德县| 东源县| 漳浦县| 肥乡县| 葵青区| 桑日县| 丰顺县| 鄂托克前旗| 南开区| 许昌县| 彭山县| 荆门市| 罗平县| 林甸县| 雷山县| 甘肃省| 喀喇沁旗| 云浮市| 革吉县| 香河县| 漠河县| 定南县| 四会市| 中西区| 德钦县| 乃东县| 石嘴山市| 红桥区| 瑞丽市| 临桂县| 明光市| 阿鲁科尔沁旗|