淺析SQL的排序,分組,統(tǒng)計(jì)常用語句(2)_Mssql數(shù)據(jù)庫教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:揭秘SQL Server視圖使用中4個(gè)限制條件SQL Server的 視圖可以起到數(shù)據(jù)保密、保證數(shù)據(jù)的邏輯獨(dú)立性、簡化查詢操作等等作用。但是視圖跟表這個(gè)基本對(duì)象還是有重大的區(qū)別,在使用視圖的時(shí)候,需要遵守4大限制。 限制條件一:定義視圖的查詢語句中不能夠使用某些關(guān)鍵字 我們都知道,視圖其實(shí)就是一組
6.進(jìn)一步了解WHERE和HAVING語句
如果你對(duì)何時(shí)應(yīng)該使用WHERE,何時(shí)使用HAVING仍舊很迷惑,請(qǐng)遵照下面的說明:
WHERE語句在GROUP BY語句之前;SQL會(huì)在分組之前計(jì)算WHERE語句。
HAVING語句在GROUP BY語句之后;SQL會(huì)在分組之后計(jì)算HAVING語句。
7.使用聚合函數(shù)統(tǒng)計(jì)分組數(shù)據(jù)
分組數(shù)據(jù)可以幫助我們分析數(shù)據(jù),但是有時(shí)我們可能需要更多的信息而不僅僅是分組。你可以使用聚合函數(shù)來統(tǒng)計(jì)分組數(shù)據(jù)。例如,下面的語句顯示每批訂購單的總價(jià)錢。
SELECT OrderID, Sum(Cost * Quantity) AS OrderTotal
FROM Orders GROUP BY OrderID
對(duì)于其它的分組來說,SELECT和GROUP BY列必須匹配。而SELECT語句包含聚合函數(shù)時(shí)這一規(guī)則是一個(gè)例外。
8.統(tǒng)計(jì)聚合數(shù)據(jù)
你可以繼續(xù)統(tǒng)計(jì)數(shù)據(jù)為每個(gè)分組顯示一個(gè)分類統(tǒng)計(jì)。SQL的ROLLUP操作符可以為每個(gè)分組顯示一個(gè)額外的分類統(tǒng)計(jì)。這個(gè)分類統(tǒng)計(jì)是使用聚合函數(shù)計(jì)算每個(gè)分組中的所有記錄得到的結(jié)果。下面的語句為每個(gè)分組計(jì)算OrderTotal:
SELECT Customer, OrderNumber, Sum(Cost * Quantity)
AS OrderTotal FROM Orders GROUP BY Customer,
OrderNumber WITH ROLLUP
對(duì)于有兩個(gè)分別為20和25 OderTotal值的分組,ROLLUP顯示一個(gè)OrderTotal值45。ROLLUP結(jié)果中的第一條記錄是唯一的,因?yàn)樗怯?jì)算所有分組記錄,這個(gè)值是整個(gè)記錄集的總值。
ROLLUP在聚合函數(shù)中不支持 DISTINCT,也不支持GROUP BY ALL語句。
9.統(tǒng)計(jì)每個(gè)列
CUBE操作符比ROLLUP更進(jìn)一步,它返回每個(gè)分組中重復(fù)值的個(gè)數(shù)。它的結(jié)果和ROLLUP相同,但是對(duì)每位客戶的每一列CUBE包含一個(gè)額外的記錄。下面的語句顯示每個(gè)分組的統(tǒng)計(jì)和額外每位客戶的統(tǒng)計(jì)。
SELECT Customer, OrderNumber, Sum(Cost * Quantity)
AS OrderTotal FROM Orders GROUP BY Customer,
OrderNumber WITH CUBE
CUBE可以給最綜合的統(tǒng)計(jì)。它不僅完成聚合和ROLLUP的功能,還可以計(jì)算定義分組的其它列,換句話說,CUBE統(tǒng)計(jì)每個(gè)可能的列組合。
CUBE不支持GROUP BY ALL語句。
10:對(duì)統(tǒng)計(jì)結(jié)果排序
當(dāng)CUBE的結(jié)果令人迷惑時(shí)(它經(jīng)常是這樣),可以添加一個(gè)GROUPING函數(shù),如下所示:
SELECT GROUPING(Customer), OrderNumber,
Sum(Cost * Quantity) AS OrderTotal FROM Orders GROUP
BY Customer, OrderNumber WITH CUBE
結(jié)果中每行包含兩個(gè)額外的值:
值1表示左邊的值是一個(gè)統(tǒng)計(jì)值,是ROLLUP或CUBE的操作符。
值0表示左邊的值是一條由最初的GROUP BY語句產(chǎn)生的詳細(xì)記錄。
分享:解讀SQL Server數(shù)據(jù)庫開發(fā)要注意的21點(diǎn)1、了解你將要對(duì)數(shù)據(jù)進(jìn)行的操作 為你的數(shù)據(jù)庫創(chuàng)建一個(gè)健壯的索引,那可是功德一件。可要做到這一點(diǎn)簡直就是一門藝術(shù)。每當(dāng)你為一個(gè)表添加一個(gè)索引,SELECT會(huì)更快了,可INSERT和DELETE卻大大的變慢了,因?yàn)閯?chuàng)建了維護(hù)索引需要許多額外的工作。顯然,這里問題的
相關(guān)Mssql數(shù)據(jù)庫教程:
- sql 語句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫,提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫教程推薦
- sql2005 數(shù)據(jù)庫轉(zhuǎn)為sql2000數(shù)據(jù)庫的方法(數(shù)據(jù)導(dǎo)出導(dǎo)入)
- 從各種位置截取字符串的SQL語法
- 關(guān)于SQL Server數(shù)據(jù)庫維度表和事實(shí)表的概述
- SQL server 視圖(view)介紹
- sql2005創(chuàng)建遠(yuǎn)程登錄帳戶的sql語句
- 詳細(xì)解析SQL Server安裝sp4補(bǔ)丁報(bào)錯(cuò)的方法
- SQL Server 2008中的新日期數(shù)據(jù)類型
- 用SQL Server Having計(jì)算列和平均值
- 解讀SQL Server數(shù)據(jù)庫備份的方法
- 如何快速掌握一些異常精妙的"SQL"語句
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫教程-淺析SQL的排序,分組,統(tǒng)計(jì)常用語句(2)
。