结合DISTINCT和COUNT查询MySQL表列的不同值出现次数

结合DISTINCT和COUNT查询MySQL表列的不同值出现次数

在MySQL中,我们可以使用DISTINCT和COUNT两个函数来查询每个列中不同值的次数。这两个函数都是非常常用的,所以掌握它们对于我们学习MySQL也是非常关键的。

阅读更多:MySQL 教程

DISTINCT函数

DISTINCT函数可以用来对查询结果集中的字段去重。当我们查询一个表的某一列时,如果这个列中存在重复的值,我们希望去掉这些重复的值,只留下不同的值,那么我们就可以使用DISTINCT函数。

以一个名为users的表为例,我们现在需要查询这个表中不同的性别(gender)种类及其出现的次数。我们可以使用以下SQL语句:

SELECT COUNT(DISTINCT gender) AS gender_num, gender FROM users GROUP BY gender;

这条SQL语句的含义是:先对gender字段进行去重操作,然后按照不同的性别分组,统计每个分组中的记录数。输出结果如下:

+------------+--------+
| gender_num | gender |
+------------+--------+
|   100      |    M   |
|   80       |    F   |
+------------+--------+

这张表格告诉我们,在users表中,男性和女性的数量分别为100和80,没有重复的记录。

COUNT函数

COUNT函数的作用是统计某一列或某一行中的记录数。我们可以使用COUNT函数来计算不同值出现的次数。

以同样的users表为例,我们现在需要查询每个地区(location)中不同职业(job)的数量。我们可以使用以下SQL语句:

SELECT COUNT(job) AS job_num, job, location FROM users GROUP BY job, location;

这条SQL语句的含义是:按照职业和地区进行分组,然后统计每个分组中不同职业的数量。输出结果如下:

+----------+--------+----------+
| job_num  |   job  | location |
+----------+--------+----------+
|   10     |  Doctor|  Beijing |
|   15     |  Teacher|  Beijing |
|   20     | Engineer|  Beijing |
|   12     |  Doctor|   Shanghai|
|   18     |  Teacher|   Shanghai|
|   22     | Engineer|   Shanghai|
|   15     |  Doctor|  Guangzhou|
|   10     |  Teacher|  Guangzhou|
|   18     | Engineer|  Guangzhou|
+----------+--------+----------+

这张表格告诉我们,在users表中,北京地区有10个医生、15个老师和20个工程师,上海地区有12个医生、18个老师和22个工程师,广州地区则有15个医生、10个老师和18个工程师。

结合DISTINCT和COUNT函数

当我们需要查询每个MySQL表列中出现的每个不同值的次数时,可以将DISTINCT和COUNT函数结合起来使用。以users表的职业(job)字段为例,我们可以使用以下SQL语句:

SELECT COUNT(DISTINCT job) AS job_num, job FROM users GROUP BY job;

这条SQL语句的含义是:先对职业字段进行去重操作,然后按照不同的职业分组,统计每个分组中的记录数。输出结果如下:

+----------+-----------+
| job_num  |     job   |
+----------+-----------+
|  3       |    Doctor  |
|  3       |    Teacher|
|  3       |  Engineer |
+----------+-----------+

这张表格告诉我们,在users表中,有3种不同的职业,每种职业出现的次数均为3次。

我们也可以使用COUNT(*)来统计每个MySQL表列中出现的每个不同值的次数。以users表的性别(gender)字段为例,我们可以使用以下SQL语句:

SELECT COUNT(*) AS gender_num, gender FROM (SELECT DISTINCT gender FROM users) AS t GROUP BY gender;

这条SQL语句的含义是:先对性别字段进行去重操作,然后按照不同的性别分组,统计每个分组中的记录数。需要注意的是,我们在外部嵌套了一层子查询,是为了对去重后的结果进行计数。输出结果如下:

+------------+--------+
| gender_num | gender |
+------------+--------+
|   1        |    M   |
|   1        |    F   |
+------------+--------+

这张表格告诉我们,在users表中,有1种男性和1种女性,每种性别出现的次数均为1次。

结论

我们可以结合DISTINCT和COUNT函数来查询每个MySQL表列中不同值出现的次数。具体操作方法是:先使用DISTINCT函数去重,然后使用COUNT函数统计不同值的出现次数。通过这种方式,我们可以更好地了解MySQL表中数据的分布情况,从而更好地制定数据库的查询优化策略。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程