原文: 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 的表,有 idnameagecounselor 这几列。

Screen-Shot-2021-09-30-at-1.35.37-AM

如果我们想选择表中的所有行,那么我们可以使用以下语法:

SELECT COUNT(*) FROM campers;
Screen-Shot-2021-09-30-at-1.37.18-AM

正如你所看到的,该查询返回的数字是 12,代表了我们的表中的总行数。

使用 WHERE 子句

我们可以使用 WHERE 子句来指定某个特定营地辅导员的名字的行数。

在这个例子中,我们想通过 Ashley 这个名字来计算营地辅导员的行数。

WHERE 子句中,我们需要指定 counselor 的值为 "Ashley"

 WHERE counselor="Ashley";

这是完整的代码:

SELECT COUNT(*) FROM campers WHERE counselor="Ashley";

这是结果会返回的内容:

Screen-Shot-2021-09-30-at-1.47.03-AM

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

Screen-Shot-2021-09-30-at-1.35.37-AM

我们可以修改我们的结果,计算 11 岁的营员有多行。

WHERE 子句中,我们需要指定 age11

WHERE age=11;

这是完整的代码:

SELECT COUNT(*) FROM campers WHERE age=11;

这是结果会返回的内容:

Screen-Shot-2021-09-30-at-1.50.46-AM

如果我们看一下刚才的表格,可以看到只有三个 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;

结果是这样的:

Screen-Shot-2021-09-30-at-2.23.35-AM

如何使用 ORDER BY 子句

我们可以修改年龄列表的例子,使用 ORDER BY 子句,将结果从小到大排列出来。

这就是 ORDER BY 子句的代码:

ORDER BY COUNT(*);

我们在 SELECT 语句的末尾添加该子句,像这样:

SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*);

这就是修改后的例子的样子:

Screen-Shot-2021-09-30-at-2.28.18-AM

如果我们希望计数结果从大到小排序,那么我们可以使用 DESC 关键字。

这就是使用 DESC 关键字的 ORDER BY 子句的代码:

ORDER BY COUNT(*) DESC;

这是完整的代码:

SELECT age, COUNT(*) FROM campers GROUP BY age ORDER BY COUNT(*) DESC;

这是新的结果:

Screen-Shot-2021-09-30-at-2.31.52-AM

如何使用 HAVING 子句

我们可以使用 HAVING 子句来为 COUNT 函数指定一个条件。

我们可以修改代码,只显示计数小于 5 的年龄段的结果。

这就是 HAVING 子句的代码:

HAVING COUNT(*)<5;

这就是完整代码:

SELECT age, COUNT(*) FROM campers GROUP BY age HAVING COUNT(*)<5;

这就是修改后的结果:

Screen-Shot-2021-09-30-at-2.48.28-AM

我们可以看到,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 之旅中好运。