SQL Distinct Statement - 如何查询、选择和计数

129 阅读4分钟

在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函数

在这个例子中,我们有一个年轻营员的表,列是id,name,agecounselor

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

SELECT COUNT(*) FROM campers;

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

使用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;

这是修改后的结果的样子:

我们可以看到,由于计数大于5,12岁的人被从这个结果中删除。

总结

在SQL中,你可以做一个数据库查询,并使用COUNT 函数来获取表中某个特定组的行数。

下面是基本的语法:

SELECT COUNT(column_name) FROM table_name;

COUNT(column_name) 将不包括 的值作为计数的一部分。NULL

SQL中的NULL 值指的是表中不存在的值。

有时你可以在括号内使用* ,用于COUNT 函数。

SELECT COUNT(*) FROM table_name;

COUNT(*) 函数将返回该组中包括NULL 值的项目总数。

我希望你喜欢这篇文章,祝你的SQL之旅好运。