mysql 中的分組函數按指定列分組數據,并對每個組計算聚合值。分組函數包括 count、sum、avg、min 和 max。having 子句可過濾分組結果,保留滿足條件的組。分組后,其他列按行分組,having 子句條件應用于分組結果,未指定則假定為 true。可使用多個 group by 和 having 子句創建復雜分組。
MySQL 中的分組函數
分組函數用于根據給定列對數據進行分組,并對每個組計算聚合值。
語法:
<code class="sql">GROUP BY col1, col2, ... HAVING condition</code>
登錄后復制
參數:
GROUP BY:指定分組列。
HAVING:用于過濾分組結果,僅保留滿足條件的組。
常用分組函數:
COUNT:返回指定列中非空值的計數。
SUM:返回指定列中所有值的總和。
AVG:返回指定列中所有值的平均值。
MIN:返回指定列中最小值。
MAX:返回指定列中最大值。
舉例:
<code class="sql">SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department HAVING total_salary > 50000;</code>
登錄后復制
該查詢將員工按部門分組,并計算每個部門的總工資。它只保留總工資大于 50,000 的部門。
要點:
分組后,原始數據中的所有其他列將按行分組。
HAVING 子句中的條件應用于分組結果,而不是原始數據。
如果未指定 HAVING 子句,則假定其為 TRUE,所有分組都將顯示。
可以使用多個 GROUP BY 和 HAVING 子句來創建更復雜的分組。