mysql group by 分組查詢

請看下錶:
sql

問題: 把統計時間(statistic)相同的,服務域(service_domain_moid) a中的hd100的數量的和與hd100s的數量的和計算出來。dom

使用方法: group by函數

首先,咱們把service_domain_moid爲a的篩選出來,以下:spa

 select * from statistic where service_domain_moid="a";

其次: 咱們把統計時間(statistic_time)相同的分組,求和code

select sum(hd100), sum(hd100s) from statistic where service_domain_moid="a" group by statistic_time;

最後,把統計結果按降序排序:排序

select sum(hd100), sum(hd100s), statistic_time  from statistic where service_domain_moid="a"
 group by statistic_time order by statistic_time desc;


對查詢結果排序it

         從表中查詢出來的數據多是無序的,或者其排列順序不是用戶所指望的順序。爲了使查詢結果的順序能知足用戶的需求,可使用ORDER BY 關鍵字對記錄進行排序。其語法規則以下:
class

  ORDER BY 屬性名 [ASC|DESC]

其中,「屬性名」參數表示按照該字段進行排序;ASC參數表示按升序的順序進行排序;DESC參數表示按降序的順序進行排序。默認狀況下,按照ASC進行排序。select



分組查詢:service

         GROUP BY 關鍵字能夠將查詢結果按某個字段或多個字段進行分組。字段中值相等的爲一組。其語法規則以下: 

 GROUP BY 屬性名 [HAVING 條件表達式] [WITH ROLLUP]

其中,「屬性名」是指按照該字段的值進行分組; 「HAVING條件表達式用來限制分組後的顯示,知足條件表達式的結果將被顯示; WITH ROLLUP 關鍵字將會在全部記錄的最後加上一條記錄。該記錄是上面全部記錄的總和。

         GROUP BY 關鍵字能夠和GROUP_CONCAT()函數一塊兒使用。GROUP_CONCAT()函數會把每一個分組中指定字段值都顯示出來。同時,GROUP BY 關鍵字一般與集合函數一塊兒使用。集合函數包括COUNT(), SUM(), AVG(), MAX()MIN()COUNT()用來統計記錄的條數;SUM()用來計算字段的值的總和;AVG()用來計算字段的平均值;MAX()用來查詢字段的最大值;MIN()用來查詢字段的最小值。

 GROUP BY 關鍵字與GROUP_CONCAT() 函數一塊兒時,每一個分組中指定字段值都顯示出來。

GROUP BY 關鍵字與集合函數一塊兒使用時,能夠經過集合函數計算分組中的總記錄,最大值,最小值等。

GROUP BY 關鍵字與HAVING ,若是加上」HAVING 條件表達式 能夠限制輸出的結果。若是知足條件表達式的結果纔會顯示。

說明: 「HAVING 條件表達式」WHERE 條件表達式都是用來限制顯示的。可是,二者起做用的地方不同。「WHERE 條件表達式」做用於表或者視圖,是表和視圖的條件。「HAVING條件表達式」做用於分組後的記錄,用於選擇知足條件的組。

GROUP BY 關鍵字與WITH ROLLUP 一塊兒使用:

使用WITH ROLLUP時,將會在全部記錄的最後加上一條記錄。這條記錄是上面全部記錄的總和。

相關文章
相關標籤/搜索