SQL中的group by 用法和注意事项

GROUP BY 子句在 SQL 中的用途是将查询结果集中的数据分为若干组,并对每一组数据执行聚合操作,如 SUMAVGMAXMINCOUNT 等。每个组通常是根据一个或多个列的值来定义的。

基本语法:

SELECT column1, AGGREGATE_FUNCTION(column2)
FROM table
GROUP BY column1;

这里,column1 是分组依据的列,而 AGGREGATE_FUNCTION(column2) 是对每组应用的聚合函数。where是在group by前筛选,having是在group by之后也就是聚合之后筛选。

注意事项:

  1. 非聚合列:在 SELECT 语句中,除了聚合函数计算的列外,其他所有列都应该出现在 GROUP BY 子句中。否则,查询可能会返回错误,因为非聚合列的值在组内不是唯一的。

  2. 聚合函数GROUP BY 常与聚合函数结合使用。聚合函数会对每个组中的行进行计算,返回单个值。

  3. 唯一性:如果 GROUP BY 子句中的列是表的主键或具有唯一约束,则可以安全地选择该表中的其他列,因为主键或唯一列值能唯一确定其他列的值。

  4. 排序GROUP BY 也会影响结果的排序。默认情况下,MySQL 和 PostgreSQL 会根据 GROUP BY 子句中的列对结果进行排序。如果需要不同的排序,可以使用 ORDER BY 子句。

你可能感兴趣的:(sql,数据库)