需要准备的工具:电脑,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”语句,点击运行即可。
可直接用嵌套查询。
方法如下:
如数据:
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。
第二个写法出来的是相同id值的计数情况。一般来说,一条select语句的执行顺序如下:from子句→where→group by(having)→select→order by→limit,因为聚集函数是在select中的,所以是在执行完group by之后再执行count()函数,所以第二条写法是得不到总的记录数的。如果你要获得总的记录数就用第一种写法。
select count(*) from
(SELECT count(*) FROM 表名 WHERE 条件 GROUP BY id ) a ;
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值。