SQL 计算行数

SQL 计算行数,计算一个表的总行数,或者计算某列中值的个数。例如,希望知道员工总数和各部门的员工人数。

SQL 计算行数 问题描述

计算一个表的总行数,或者计算某列中值的个数。例如,希望知道员工总数和各部门的员工人数。

SQL 计算行数 解决方案

当计算整个表的总行数时,只需要使用 COUNT 函数和符号 * 即可。

1 select count(*)
2   from emp
 
  COUNT(*)
----------
        14

如果把数据分为多组,就需要使用 COUNT 函数和 GROUP BY 子句。

1 select deptno, count(*)
2   from emp
3 group by deptno
 
    DEPTNO   COUNT(*)
---------- ----------
        10          3
        20          5
        30          6

SQL 计算行数 扩展知识

计算各部门的员工人数的时候,我们就是在对数据进行分组。每多一个员工,则总数加一,最终会计算出各个部门的员工人数。本例使用了 SQL 做聚合运算,因为重点关注的不是诸如某个员工的工资或职位这样的详细信息,而是各个部门的员工人数。注意,当把列名称作为参数的时候,COUNT 函数会忽略 Null。使用符号 * 或者常量参数的时候,就会包含 Null,考虑下面的例子。

select deptno, comm
  from emp
 
    DEPTNO       COMM
---------- ----------
        20
        30        300
        30        500
        20
        30       1300
        30
        10
        20
        10
        30          0
        20
        30
        20
        10
 
select count(*), count(deptno), count(comm), count('hello')
  from emp
 
  COUNT(*) COUNT(DEPTNO) COUNT(COMM) COUNT('HELLO')
---------- ------------- ----------- --------------
        14            14           4             14
 
select deptno, count(*), count(comm), count('hello')
  from emp
 group by deptno
 
    DEPTNO   COUNT(*) COUNT(COMM) COUNT('HELLO')
---------- ---------- ----------- --------------
        10          3           0              3
        20          5           0              5
        30          6           4              6

如果参数列的值都为 Null,或者表里没有任何数据,COUNT 函数就会返回 0。请注意,即使 SELECT 子句里只有聚合函数,我们仍然可以按照其他列对表中的数据进行分组,如下所示。

select count(*)
  from emp
 group by deptno
 
  COUNT(*)
----------
         3
         5
         6

注意,尽管 DEPTNO 不存在于 SELECT 列表里,我们仍然按照该列进行分组。把用于分组的列放入 SELECT 子句通常有助于提高可读性,但这并不是必需的。反之,如果某列被放入了 SELECT 列表,那么我们就必须保证它也存在于 GROUP BY 子句里。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程