[數據庫]SQL中Group By 的常見使用方法.


前言
今天逛java吧看到了一個面試題, 於是有了今天這個文章, 回顧下Group By的用法.
題目如下:
Select name from table group by name having count(*) = 10;

解釋: 根據(by)一定的規則進行分組(Group) 所以就是根據題中的name進行分組, 然后把name相同的數量為10的記錄都查找出來. 
示例:
表結構:

執行結果:


如果再添加一條記錄: wangmeng. 那么 就查詢不到了. 只有 相同username count 為10的才會被查詢出來.


1、概述
Group By 從字面意義上理解就是根據“By”指定的規則對數據進行分組,所謂的分組就是將一個“數據集”划分成若干個“小區域”,然后針對若干個“小區域”進行數據處理。

2,原始表


3,實例說明
示例1

SQL語句如下:

select category, sum(count) as 數量之和
from groupbyDemo
group by category

結果如下:

看到結果大家都應該知道是怎樣回事吧? 實際上就是分類匯總.
示例2
SQL語句如下:

SELECT category, SUM(COUNT) AS 數量之和, summary
FROM groupByDemo
GROUP BY category
ORDER BY category desc

結果如下:

說明, 這里加的 查詢summary 會顯示數據的第一條記錄. 

4,Group By與聚合函數
常用的聚合函數: count, sum, avg, max, min
示例1
SQL語句如下:

SELECT category, AVG(COUNT) AS 平均值 FROM groupByDemo GROUP BY category;

結果如下: 

5, Having與Where的區別
(1)where 子句的作用是在對查詢結果進行分組前,將不符合where條件的行去掉,即在分組之前過濾數據,where條件中不能包含聚組函數,使用where條件過濾出特定的行。
(2)having 子句的作用是篩選滿足條件的組,即在分組之后過濾數據,條件中經常包含聚組函數,使用having 條件過濾出特定的組,也可以使用多個分組標准進行分組。

示例1
SQL代碼:

SELECT category, SUM(COUNT) AS 數量之和 FROM groupByDemo
GROUP BY category
HAVING SUM(COUNT) > 18

結果如下:


示例2
SQL語句:

SELECT category, SUM(COUNT)FROM groupByDemo
WHERE COUNT > 10
GROUP BY category
HAVING SUM(COUNT) > 8

結果如下:


大概就是這么多了, 如果再有其他的情況會再次更新的. 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM