sql語句分組
『壹』 如何理解sql語句的分組概念
在介紹group by 和having子句前,我們必需先講講sql語言中一種特殊的函數:聚合函數,例如sum、count、max、 avg等。這些函數和其它函數的根本區別就是它們一般作用在多條記錄上。 Sql代碼 select sum(population) from bbc select sum(population) from bbc 這里的sum作用在所有返回記錄的population欄位上,結果就是該查詢只返回一個結果,即所有國家的總人口數。
通過使用group by子句,可以讓sum 和count這些函數對屬於一組的數據起作用。當你指定group by region 時,屬於同一個region(地區)的一組數據將只能返回一行值,也就是說,表中所有除region(地區)外的欄位,只能通過 sum、count等聚合函數運算後返回一個值。
having子句可以讓我們篩選成組後的各組數據,where子句在聚合前先篩選記錄.也就是說作用在group by子句和having子句前.
而having子句在聚合後對組記錄進行篩選。
讓我們還是通過具體的實例來理解group by和having子句,還採用第三節介紹的bbc表。
SQL實例:
一、顯示每個地區的總人口數和總面積:Sql代碼 select region,sum(population),sum(area) from bbc group by region select region,sum(population),sum(area) from bbc group by region 先以region把返回記錄分成多個組,這就是group by的字面含義。分完組後,然後用聚合函數對每組中的不同欄位(一或多條記錄)作運算。
二、 顯示每個地區的總人口數和總面積.僅顯示那些面積超過1000000的地區。Sql代碼 select region,sum(population),sum(area) from bbc group by region having sum(area)>1000000 select region,sum(population),sum(area) from bbc group by region having sum(area)>1000000 在這里,我們不能用where來篩選超過1000000的地區,因為表中不存在這樣一條記錄。
相反,having子句可以讓我們篩選成組後的各組數據.
『貳』 SQL中分組短語是什麼
SQL中分組短語是:group by。
GROUP BY 語句
GROUP BY 語句用於結合合計函數,根據一個或多個列對結果集進行分組。
GROUP BY 語法
SELECT column_name, aggregate_function(column_name)FROM table_name WHERE column_name operator valueGROUP BY column_name
Group By 的使用:
1、 Group By [Expressions]:
這個恐怕是Group By語句最常見的用法了,Group By + [分組欄位](可以有多個)。在執行了這個操作以後,數據集將根據分組欄位的值將一個數據集劃分成各個不同的小組。比如有如下數據集,其中水果名稱(FruitName)和出產國家(ProctPlace)為聯合主鍵:
SELECTFruitName,ProctPlace,Price,IDASIDE,Discount
FROMT_TEST_FRUITINFO
WHERE(ProctPlace=N'china')ORDERBYIDE
這里只有在ORDER BY語句中才可以使用IDE,其他條件語句中如果需要引用列名則只能使用ID,而不能使用IDE。
以上就是Group By的相關使用說明。內容參考與網站CSDN中的「SQL語句Group By 語句小結「。
『叄』 SQL語句 group by子句後的分組項如果有多個是怎樣進行分組的
表示根據後面的欄位來分組,如果只有1個欄位,那隻是根據這個欄位的值來進行一次分組就可以了;若後面有多個欄位,那表示根據多欄位的值來進行層次分組,分組層次從左到右,即先按第1個欄位分組,然後在第1個欄位值相同的記錄中,再根據第2個欄位的值進行分組;接著第2個欄位值相同的記錄中,再根據第3個欄位的值進行分組......依次類推。
『肆』 sql語句 如何分組後得到記錄總數
SELECT COUNT(*)
FROM (SELECT 分組欄位 FROM 表
GROUP BY 分組欄位
)別名
或者
SELECT COUNT(*)
FROM (SELECT distinct 分組欄位 FROM 表)別名
(4)sql語句分組擴展閱讀:
SQL分組查詢
在SQL Server中使用的分組查詢是ORDER BY子句,使用ORDER BY子句要同聚合函數配合使用才能完成分組查詢,在SELECT查詢的欄位中如果欄位沒有使用聚合函數就必須出現在ORDER BY子句中(即SELECT後邊的欄位名要麼出現在聚合函數中,要麼在ORDER BY子句中使用)
在分組查詢中還可以配合使用HAVING子句,定義查詢條件。
使用group by進行分組查詢
在使用group by關鍵字時,在select列表中可以指定的項目是有限制的,select語句中僅許以下幾項:
1、被分組的列
2、為每個分組返回一個值得表達式,例如用一個列名作為參數的聚合函數
3、group by 有一個原則,就是 select 後面的所有列中,沒有使用聚合函數的列,必須出現在 group by 後面
『伍』 SQL語句分組查詢
是SQL SERVER嗎?就是想要怎樣把查詢結果導出到文本文檔是吧?
EXEC master..xp_cmdshell 'BCP "select XLBH,CMBH,SUM(XSJE) from MDFSLSK group by XLBH,CMBH" queryout D:\XXX.TXT -c -T'
好像要在同一行才能正確執行,MDFSLSK表前可能要加上資料庫名.用戶名. 比如這樣:資料庫名.DBO.MDFSLSK
-T是使用信任連接 當然可以換成 -U"sa" -P"password",要詳細了解就查一下BCP
『陸』 SQL語言到底什麼時候要用到group by
通常SELECT語句中使用了分組子句就會有聚合操作。 但執行聚合操作不一定要用分組子句。
比如:
select avg(grade) from cs
查詢選課表(cs)中學生的總成績(grade);這里就不用分組;
又如:
select sno,sum(grade) from cs group by sno
查詢選課表裡每個學問生的總成績,這里就要用分組,分組的依照欄位答必須是select 後沒有被計算過的原始欄位;
(6)sql語句分組擴展閱讀:
常見語句
更新:update table1 set field1=value1 where 范圍
查找:select * from table1 where field1 like 』%value1%』 (所有包含『value1』這個模式的字元串)
排序:select * from table1 order by field1,field2 [desc]
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1[separator]
『柒』 SQL語句分組查詢
select case_id,
Month||'月份',
sum(jqjb_id)
from (
select case_id,
to_char(recDate,'MM') Month,
jqjb_id
from table_name
)
group by case_id,
Month||'月份'
如果以上欄位是實際欄位,那麼把 table_name修改成實際表明即可完成查詢
『捌』 sql語句分組group by 問題
select*from
(selectrow_number()over(partitionbyt1.機構號orderbyt.Acct_Baldesc)rn,*
from
(select
dd.Host_cust_id,-客戶號
Business_Org_Num,--機構號
sum(Acct_Bal)Acct_Bal--存款總額
fromCJT88_ACCT_DDdd--存款表
groupbyHost_cust_id,Business_Org_Num
wheredd.stat_dt='20130824'--日期
)t1)t2
wheret2.rn<=5
試試這個
『玖』 sql分組語句
你的意思是 以 x1 為條件 查 欄位2 吧? 這和分組有關嗎?
按我的理解是這樣的
select 欄位2 欄位3 from tablename where 欄位3=x1
結果
B1 X1
B2 X1
B3 X1