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