分组数据
一:GROUP BY
1.介紹
GROUP BY子句通過列或表達式的值將一組行分組為一個小分組的匯總行記錄。
GROUP BY子句為每個分組返回一行。換句話說,它減少了結果集中的行數。
經常使用GROUP BY子句與聚合函數一起使用,如SUM,AVG,MAX,MIN和COUNT。SELECT子句中使用聚合函數來計算有關每個分組的信息。
?
2.用法
?
3.舉例,普通用法
效果相同。
,
?
4.與聚合函數在一起舉例一
需求:想知道每個狀態中的訂單數,可以使用COUNT函數與GROUP BY子句查詢語句
?
5.與聚合函數在一起的舉例二
?
6.舉例三
?
7.group by用表達式
可以按表達式對行進行分組。以下查詢獲取每年的總銷售額
使用YEAR函數從訂單日期(orderDate)中提取年份數據。只包括已發貨(Shipped)狀態的訂單。
請注意,SELECT子句中出現的表達式必須與GROUP BY子句中的相同。
?
8.group by與having
可使用HAVING子句過濾GROUP BY子句返回的分組。
以下查詢使用HAVING子句來選擇2013年以后的年銷售總額。
?
9.mysql與標準語句
A:標準SQL不允許使用GROUP BY子句中的別名,但MySQL支持此選項。
以下查詢從訂單日期提取年份,并對每年的訂單進行計數。該year用作表達式YEAR(orderDate)的別名,它也用作GROUP BY子句中的別名,此查詢在標準SQL中無效。
?
B:MySQL還允許您以升序或降序(標準SQL不能提供)對組進行排序.
默認順序是升序。例如,如果要按狀態獲取訂單數量并按降序對狀態進行排序,則可以使用帶有DESC的GROUP BY子句,如下查詢語句
?
?
二:HAVING
1.介紹
HAVING子句為行分組或聚合組指定過濾條件
在SELECT語句中使用HAVING子句來指定一組行或聚合的過濾條件。
HAVING子句通常與GROUP BY子句一起使用,以根據指定的條件過濾分組。如果省略GROUP BY子句,則HAVING子句的行為與WHERE子句類似。
請注意,HAVING子句將過濾條件應用于每組分行,而WHERE子句將過濾條件應用于每個單獨的行。
2.示例
可以使用GROUP BY子句來獲取訂單號,查看每個訂單銷售的商品數量和每個銷售總額:
現在,可以通過使用HAVING子句查詢(過濾)哪些訂單的總銷售額大于55000,如下所示:
?
可以使用邏輯運算符(如OR和AND)在HAVING子句中構造復雜過濾條件。 假設您想查找哪些訂單的總銷售額大于50000,并且包含超過600個項目:
?
總結
- 上一篇: 沫沫金:2014最新全浏览器兼容左列固定
- 下一篇: tomcat基本知识点与实例