原文: SQL Distinct Statement – How to Query, Select, and Count
在 SQL 中,你可以进行数据库查询,并使用 COUNT 函数来获取表中某一组的行数。
在这篇文章中,我将通过一些代码实例向你展示如何使用 COUNT 函数。
SQL 中的 COUNT 函数是什么
这个 SQL 函数将返回给定组的行数的计数。
下面是基本语法:
SELECT COUNT(column_name) FROM table_name;SQL 中的 SELECT 语句告诉计算机要从表中获取数据。
COUNT(column_name) 将不把 NULL 值作为计数的一部分。
SQL 中的 NULL 值指的是表中不存在的值。
有时你可以在 COUNT 函数括号内使用 *。
SELECT COUNT(*) FROM table_name;COUNT(*) 函数将返回该组项目的总数,包括 NULL 值。
SQL 中的 FROM 子句指定了我们要列出哪个表。
你也可以在 COUNT 函数中使用 ALL 关键字。
SELECT COUNT(ALL column_name) FROM table_name;ALL 关键字将计算表中的所有数值,包括重复的。你可以省略这个关键字,因为无论你是否写入,COUNT 函数都将 ALL 关键字作为默认值。
有时你会看到 DISTINCT 关键字与 COUNT 函数一起使用。
SELECT COUNT(DISTINCT column_name) FROM table_name;DISTINCT 关键字将只计算 NOT NULL 的唯一值。计算机将忽略任何重复的值。
如何在 SQL 中使用 COUNT 函数
在这个例子中,我们有一个 campers 的表,有 id、name、age 和 counselor 这几列。

如果我们想选择表中的所有行,那么我们可以使用以下语法:
SELECT COUNT(*) FROM campers;
正如你所看到的,该查询返回的数字是 12,代表了我们的表中的总行数。
使用 WHERE 子句
我们可以使用 WHERE 子句来指定某个特定营地辅导员的名字的行数。
在这个例子中,我们想通过 Ashley 这个名字来计算营地辅导员的行数。
在 WHERE 子句中,我们需要指定 counselor 的值为 "Ashley"。
WHERE counselor="Ashley";这是完整的代码:
SELECT COUNT(*) FROM campers WHERE counselor="Ashley";这是结果会返回的内容:

如果我们看一下前面的表格,可以看到,"Ashley" 只出现了 4 次。

我们可以修改我们的结果,计算 11 岁的营员有多行。
在 WHERE 子句中,我们需要指定 age 为 11。
WHERE age=11;这是完整的代码:
SELECT COUNT(*) FROM campers WHERE age=11;这是结果会返回的内容:

如果我们看一下刚才的表格,可以看到只有三个 11 岁的露营者。
如何使用 GROUP BY 子句
我们可以使用 GROUP BY 子句和 COUNT 函数来查看表中 11、12 和 13 岁的营员人数。
我们首先要选择 age 列并使用 COUNT 函数:
SELECT age, COUNT(*)然后我们要指定 campers 并按 age 对结果进行分组:
FROM campers GROUP BY age;这就是代码的全部内容:
SELECT age, COUNT(*) FROM campers GROUP BY age;结果是这样的:

如何使用 ORDER BY 子句
我们可以修改年龄列表的例子,使用 ORDER BY 子句,将结果从小到大排列出来。
这就是 ORDER BY 子句的代码:
ORDER BY COUNT(*);我们在 SELECT 语句的末尾添加该子句,像这样:
SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*);这就是修改后的例子的样子:

如果我们希望计数结果从大到小排序,那么我们可以使用 DESC 关键字。
这就是使用 DESC 关键字的 ORDER BY 子句的代码:
ORDER BY COUNT(*) DESC;这是完整的代码:
SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*) DESC;这是新的结果:

如何使用 HAVING 子句
我们可以使用 HAVING 子句来为 COUNT 函数指定一个条件。
我们可以修改代码,只显示计数小于 5 的年龄段的结果。
这就是 HAVING 子句的代码:
HAVING COUNT(*)<5;
这就是完整代码:
SELECT age, COUNT(*) FROM campers GROUP BY age HAVING COUNT(*)<5;
这就是修改后的结果:

我们可以看到,12 岁的人被从这个结果中删除,因为计数大于 5。
总结
在 SQL 中,你可以做一个数据库查询,并使用 COUNT 函数来获取表中某个特定组的行数。
下面是基本的语法:
SELECT COUNT(column_name) FROM table_name;COUNT(column_name) 将不把 NULL 值作为计数的一部分。
SQL 中的 NULL 值是指表中不存在的值。
有时,你可以在 COUNT 函数的括号内使用 *。
SELECT COUNT(*) FROM table_name;COUNT(*) 函数将返回该组中项目的总数,包括 NULL 值。
我希望你喜欢这篇文章,并祝你在 SQL 之旅中好运。