group by 語句的理解

 group by 語句是根據表中的某個字段進行分組 ,聚合。mysql

這在開發中很場景sql

這個表裏面的categeryId是產品類別函數

SELECT `catageryId` ,AVG(price) FROM `goods` GROUP BY `catageryId`

這條語句會返回幾條結果 ? (對的,會返回兩條,這條語句按產品類別分組查詢出每一個產品類別的平均價格,有a,b兩中類別全部返回兩條結果)code

group by 語句會掃描原始表的每一行數據 ,根據每一行的 catageryId(group by 字段)對其它字段進行聚合(實現 max(),min(),count(),sum(),avg())開發

 好比這裏第一,第二條記錄的catageryId 是 a  ,mysql 就把這兩行記錄對應的price(5,4)作平均。產品

 聚合函數中的參數 根據實際需求作出改變im

SELECT `catageryId` ,AVG(price+1) FROM `goods` GROUP BY `catageryId`

這裏將price 字段加1後   在聚合,結果就不一樣了數據

實際開發中常常在聚合函數裏面經過case when,if 語句邏輯實現相關功能。查詢

 

GROUP_CONCAT函數(在存儲過程當中拼接查詢表頭時經常使用)存儲過程

   這個函數是在分組後進行拼接 默認所有一個分組,返回一條記錄

SELECT GROUP_CONCAT(goodName) FROM goods

SELECT GROUP_CONCAT(goodName) FROM goods GROUP BY `catageryId`

這個按 catageryId分組後的結果 有兩條記錄

相關文章
相關標籤/搜索