前言
今天逛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
結果如下:
大概就是這么多了, 如果再有其他的情況會再次更新的.