跳到主要内容

解释sum、count(*)、count(1)、count(column)的区别 ?

参考答案:

sumcount(*)count(1)count(column) 都是在 SQL 中用于聚合的函数,但它们的功能和用途有所不同。以下是它们之间的主要区别:

  1. sum:

    • sum 函数用于计算某列的总和。
    • 它通常用于数值列,并返回这些数值的总和。
    • 如果列中包含 NULL 值,sum 会忽略这些 NULL 值。示例:
SELECT sum(salary) FROM employees;

这将返回 employees 表中 salary 列的总和。 2. count(*):

* `count(*)` 计算表中的所有行数。
* 它包括所有的行,无论列中的值是否为 NULL。
* 这是一个非常常见的函数,用于快速获取表中的记录数。示例:
SELECT count(*) FROM employees;

这将返回 employees 表中的记录数。 3. count(1):

* `count(1)` 的功能与 `count(*)` 非常相似,也是计算表中的所有行数。
* 实际上,`count(1)` 通常会稍微慢一些,因为数据库需要为每一行生成一个数字 1,然后再进行计数。但在大多数现代数据库中,这种差异是可以忽略不计的。
* 使用 `count(1)` 还是 `count(*)` 主要取决于个人或团队的编码习惯。示例:
SELECT count(1) FROM employees;

这将返回 employees 表中的记录数,与 count(*) 的结果相同。 4. count(column):

* `count(column)` 计算指定列中非 NULL 的值的数量。
* 如果列中包含 NULL 值,这些值将不会被计入总数。
* 这对于想要知道某列中有多少有效(非 NULL)值的场景非常有用。示例:
SELECT count(name) FROM employees;

这将返回 employees 表中 name 列中非 NULL 的值的数量。

总结:

  • sum 用于计算数值列的总和。
  • count(*)count(1) 用于计算表中的所有行数。
  • count(column) 用于计算指定列中非 NULL 的值的数量。