原文: 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 之旅中好运。