SQL COUNT函数


在本教程中,我们将学习如何使用SQL COUNT函数获取指定表中的行数。

SQL COUNT函数介绍

COUNT函数函数的作用是:返回组中的行数。

COUNT函数的第一种形式是:

1
COUNT(*)

COUNT(*)函数将返回指定表或视图中的行数(包含重复项和NULL值)。

要返回排除重复项和NULL值的行数,请使用以下形式的COUNT()函数:

1
COUNT(DISTINCT column)

要返回包含重复行数但排除NULL值的行数,请使用以下形式的COUNT()函数:

1
COUNT(ALL column)

COUNT() 函数 计算重复项? 计算NULL值项?
COUNT(*)
COUNT(DISTINCT column)
COUNT(ALL column)

SQL COUNT(*) 函数示例

基本的 SQL COUNT(*)示例

要获取orders_test表中的订单数,可以使用COUNT(*)函数,如下所示:

1
2
3
4
SELECT
COUNT(*)
FROM
orders_test;

待处理订单是发货日期为空的订单。

要获取待处理订单数,可以使用以下查询语句:

1
2
3
4
5
6
SELECT
COUNT(*) 'Pending orders'
FROM
orders_test
WHERE
shippeddate IS NULL;

带GROUP BY子句的SQL COUNT(*)示例

要获取每个客户的订单数,可以将COUNT(*)函数与GROUP by子句一起搭配使用:

1
2
3
4
5
6
SELECT
customerid, COUNT(*)
FROM
orders
GROUP BY customerid
ORDER BY COUNT(*) DESC;

GROUP BY子句用于按客户对订单进行分组。然后对于每个组,COUNT函数按客户对订单进行计数。

带HAVING子句的SQL COUNT(*)示例

若要获取拥有20个以上订单的客户,可以将COUNT函数与GROUP BY和HAVING子句一起使用:

1
2
3
4
5
6
SELECT
customerid, COUNT(*)
FROM
orders
GROUP BY customerid
HAVING COUNT(*) > 20;

GROUP BY子句按customerid将订单进行分组。
COUNT(*)函数返回每个customerid的订单数。
HAVING子句用于只获取具有20个以上订单的组。

SQL COUNT ALL 示例

要计算所有的客户数,使用下面的查询语句:

1
2
3
4
SELECT
COUNT(*)
FROM
customers;

下面的查询语句将返回除空值NULL以外的国家数:

1
2
3
4
SELECT
COUNT(ALL country)
FROM
customers;

SQL COUNT DISTINCT 示例

若要同时排除空值NULL和重复值,可以使用COUNT(DISTINCT column) 如下所示:

1
2
3
4
SELECT
COUNT(DISTINCT country)
FROM
customers;


原文链接:https://codingdict.com/