group by 和order by的相關知識

用於在查詢結果集中對記錄進行分組,以彙總數據或者爲整個分組進行單行的彙總。

GROUP BY 和 ORDER BY一起使用時,ORDER BY要在GROUP BY的後面。


一、GROUP BY

GROUP BY語句用來與聚合函數(aggregate functions such as COUNT, SUM, AVG, MIN,MAX)聯合使用來得到一個或多個列的結果集。目的是將結果彙總。

語法如下:

SELECT column1, column2, ... column_n, aggregate_function (expression)            

FROM tables            

WHERE predicates            

GROUP BY column1, column2, ... column_n;

因爲聚合函數通過作用於一組數據而只返回一個單個值,因此,在SELECT語句中出現的元素要麼爲一個聚合函數的輸入值,要麼爲GROUP BY語句的參數,否則會出錯。

他的作用就是將產生的結果分類彙總。我們測試一下,如果不加group by 會發生什麼。果然,不加group by 報錯



我們可以理解成,我group by 語法爲了顯示分組,我們按照id 進行分組,然後分別按照各個組的統計各自的記錄數量。

一般如:
select 單位名稱,count(職工id),sum(職工工資) form [某表]
group by 單位名稱

這樣的運行結果就是以“單位名稱”爲分類標誌統計各單位的職工人數和工資總額。


 ORDER BY 語句用於根據指定的列對結果集進行排序,默認按照升序對記錄進行排序。

GROUP BY 和 ORDER BY一起使用時,ORDER BY要在GROUP BY的後面。

例如:SELECT dep.department_name, MAX(emp.salary), MIN(emp.salary)  
          FROM departments dep  
LEFT JOIN employees emp  
ON (dep.department_id = emp.department_id)  
GROUP BY dep.department_name  
--order by 的列,應該出現在group by 子句中   
ORDER BY dep.department_id DESC

group by a,b,c       則a,b,c三個字段是按照先按a字段對數據行進行排序,再按b字段對那些字段a爲同一個值的數據行進行排序,再再按c字段對那些字段a爲同一個值且字段b爲同一個值的數據行進行排序.

order  by a,b,c   也是如此。

故而

表T 有a,b,c三個字段,按a分組再按c排序的方法如下:

select * from T order  by a,c//兩個字段順序不能顛倒。













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章