不使用聚合函数的 Group By:了解机制
GROUP BY 是一个强大的 SQL 子句,它允许我们基于以下条件对数据进行分组和汇总:指定的列。虽然 SUM、COUNT 和 AVG 等聚合函数通常与 GROUP BY 一起使用,但也可以在不使用聚合函数的情况下使用 GROUP BY。理解这个概念对于充分利用 GROUP BY 的功能至关重要。
在不使用聚合函数的情况下使用 GROUP BY 时,必须了解每个组将在输出中产生一行。未包含在 GROUP BY 子句中的列的值将针对组中的每一行有效地重复。
考虑 EMP 表:
场景 1:无效的 GROUP BY 表达式
此查询失败并出现错误ORA-00979,因为 Sal 未包含在 GROUP BY 子句中。每行都有不同的 sal 值,从而导致每个员工有多个行。
场景 2:有效的 GROUP BY 表达式
此查询有效因为它按名称对行进行分组,这确保了每个员工的行都是唯一的。对于属于同一员工的每一行,sal 的值将重复。
场景 3:无效的 GROUP BY 表达式
此查询无效,因为它尝试按 sal 对行进行分组,这将导致具有相同信息的员工出现多行salary.
场景 4:无效的 GROUP BY 表达式
此查询无效,因为 GROUP BY 子句中的列顺序必须与列顺序匹配在 SELECT 子句中。
场景 5:有效的 GROUP BY 表达式
此查询有效,因为 GROUP BY 子句中的列顺序与 SELECT 子句中的列顺序匹配。结果将为 empno、ename 和 sal 的每个不同组合包含一行。
总之,不带聚合函数的 GROUP BY 通过对共享相同值的行进行分组来删除指定列中的重复项。但是,未包含在 GROUP BY 子句中的所有列将在输出行中具有重复的值。
以上是SQL 中没有聚合函数时 GROUP BY 如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!