mysql 分组之后如何统计记录条数, gourp by 之后的 count

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql 分组之后如何统计记录条数, gourp by 之后的 count相关的知识,希望对你有一定的参考价值。

SELECT count(*) FROM 表名 WHERE 条件 // 这样查出来的是总记录条

SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数.

如何获得 第二个sql语句的总记录条数
第二个查询是用作多表联查的, GROUP BY 后面那个ID 是其中一个表的主键

需要准备的工具:电脑,sql数据库。

1、首先新建一个test表,有id,name,second三个字段,其中name字段有重复数据。

2、输入“select name,max(second) from test group by name”语句,点击运行。

3、可以看到已经查询出按name分组后取出的second最大的一条记录。

4、以输入“select name,max(second) from test group by name order by max(second) desc”语句,按分组后second最大值进行降序。

5、如果想查询mysql分组后最小的一条记录,输入“select name,min(second) from test group by name”语句,点击运行即可。

参考技术A

可直接用嵌套查询。

方法如下:

如数据:

id          name

1            a

1            b

2            c

2            d

3            e

3            f

3            g

3            h

select count(t.counts) from
(select id,count(*) counts from 表名 group by id) t

这样得到的结果就是3。

参考技术B 第二个写法出来的是相同id值的计数情况。一般来说,一条select语句的执行顺序如下:from子句→where→group by(having)→select→order by→limit,因为聚集函数是在select中的,所以是在执行完group by之后再执行count()函数,所以第二条写法是得不到总的记录数的。如果你要获得总的记录数就用第一种写法。 参考技术C select count(*) from
(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ;本回答被提问者和网友采纳
参考技术D

SELECT count(*) FROM 表名 WHERE 条件 // 这样查出来的是总记录条

SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id //这样统计的会是每组的记录条数.

获得第二个sql语句的总记录条数则是,如下:

select count(*) from(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ;

注意:

子查询方式,MySQL中子结果集必须使用别名,而Oracle中不需要特意加别名。

扩展资料:

MySQL使用统计函数的语法形式如下:

SELECT function(field) FROM table_name WHERE condition

在上述语句中利用统计函数function来统计关于字段field的值。

1、统计数据记录条数

统计函数COUNT()用来实现统计数据记录条数,可以用来确定表中记录的条数或符合条件的记录条数。可以通过以下两种方式来实现该统计函数:

(1) COUNT(*) :该种方式可以实现对表中记录进行统计,不管字段中包含的是NULL值还是非NULL值。

(2) COUNT(field):该种方式可以实现对指定字段的记录进行统计,在具体统计时将忽略NULL值。

2、统计计算平均值

统计函数AVG()首先用来实现统计计算特定字段值之和,然后求得该字段的平均值。使用方式如下:

AVG(field):该方式可以实现对指定字段的平均值进行计算,在具体统计时将忽略NULL值。

MySQL 分组后,统计记录条数

分组后,统计记录条数:

  SELECT num,count(*) AS counts from test_a GROUP BY num; 

  查询结果如下:

  

 

对num去重后的数量的统计:

  SELECT count(t.counts) FROM ( SELECT num,count(*) AS counts from test_a GROUP BY num ) AS t;

  SELECT count(DISTINCT num) AS count FROM test_a;

  它俩结果一样,都是5;只是一个是子查询(嵌套),一个是内置函数 distinct();

 

 

数据库结构

 

以上是关于mysql 分组之后如何统计记录条数, gourp by 之后的 count的主要内容,如果未能解决你的问题,请参考以下文章

mysql 分组之后如何统计记录条数, gourp by 之后的 count

mysql 统计分组之后统计录数条数

mysql根据分组和条件查询以后如何统计记录的条数

MySQL 分组后,统计记录条数

MySQL 分组后,统计记录条数

MySQL 分组后,统计记录条数