2024年5月31日发(作者:)

count函数用法

不同 COUNT 函数的比较

可以使用不同形式的 COUNT 函数检索关于表的不同类型信息。下面的表格

总结了每种形式 COUNT 函数的含义:

COUNT 函数

COUNT (*)

描述

返回满足查询的行数。如果没有指定 WHERE 子

句,这个函数返回表的总行数。

COUNT (DISTINCT) 或

返回指定列中非 NULL 唯一值的数量

COUNT (UNIQUE)

COUNT (column) 或

返回指定列中非 NULL 值的总数

COUNT (ALL column)

一些例子可以帮助说明不同形式 COUNT 函数之间的区别。下面的大多数例

子对演示数据库中 orders 表的 ship_instruct 列进行查询。关

于 orders 表的结构和 ship_instruct 列中数据的信息,请参阅

IBM Informix: SQL

参考指南》

关于演示数据库的说明。

Count(*) 函数举例

在下面的例子中,用户想知道 orders 表的总行数。因此用户可以在不带

有 WHERE 子句的 SELECT 语句中调用 COUNT(*) 函数:

SELECT COUNT(*) AS total_rows FROM orders

下面的表格给出了查询结果。

total_rows

23

在以下的示例中,用户想知道 orders 表中有多少行在 ship_instruct 列中

有 NULL 值。用户在带有 WHERE 子句的 SELECT 语句中调

用 COUNT(*) 函数,并且在 WHERE 子句中指定 IS NULL 条件。

SELECT COUNT (*) AS no_ship_instruct FROM orders

WHERE ship_instruct IS NULL

下面的表格给出了查询结果。

no_ship_instruct

2

在下面的例子中,用户想知道 orders 表中有多少行的 ship_instruct 列具

有 express 值。因此用户可以在投影列表中调用 COUNT(*) 函数,并

在 WHERE 子句中指定等于(=)关系运算符。

SELECT COUNT (*) AS ship_express FROM ORDERS

WHERE ship_instruct = 'express'

下面的表格给出了查询结果。

ship_express

6

COUNT DISTINCT 函数举例

在下一个示例中,用户想知道 orders 表的 ship_instruct 列中有多少

非 NULL 唯一值。用户在 SELECT 语句的投影列表中调

用 COUNT DISTINCT 函数。

SELECT COUNT(DISTINCT ship_instruct) AS unique_notnulls

FROM orders

下面的表格给出了查询结果。

unique_notnulls

16

COUNT column 函数举例

在以下的示例中,用户想知道 orders 表的 ship_instruct 列中有多少

非 NULL 值。用户在 SELECT 语句的投影列表中调

用 COUNT(column) 函数。

SELECT COUNT(ship_instruct) AS total_notnullsFROM orders

下面的表格给出了查询结果。

total_notnulls

21

类似的对 ship_instruct 列中非 NULL 值的查询可以包括跟随 COUNT 关

键字的括号内的 ALL 关键字:

SELECT COUNT(ALL ship_instruct) AS all_notnulls FROM orders

下表给出的查询结果无论包含或省略 ALL 关键字都是一样的(因为 ALL 是缺

省值)。