聚合函数

MySQL之聚合数据(AVG,COUNT,MAX,MIN,SUM)

别说谁变了你拦得住时间么 提交于 2019-11-29 09:04:06
1.首先我们需要了解下什么是聚合函数    聚合函数aggregation function又称为组函数。 认情况下 聚合函数会对当前所在表当做一个组进行统计。 2. 聚合函数的特点   1.每个组函数接收一个参数(字段名或者表达式) 统计结果中默认忽略字段为NULL的记录   2.要想列值为NULL的行也参与组函数的计算,必须使用IFNULL函数对NULL值做转换。   3. 不允许出现嵌套 比如 sum(max(xx)) 3.聚合函数 count(),求数据表的行数 1 select count (*/字段名) from 数据表 4.聚合函数 max(),求某列的最大数值 1 select max (字段名) from 数据表    5.聚合函数min(),求某列的最小值 1 select main(字段名) from 数据表    6.聚合函数sum(),对数据表的某列进行求和操作 1 select sum (字段名) from 数据表    7.聚合函数avg(),对数据表的某列进行求平均值操作 1 select avg (字段名) from 数据表    8.聚合函数和分组一起使用 1 select count (*),group_concat(age) from students group by age;       总结:  

MySQL聚合函数与数据分组

不打扰是莪最后的温柔 提交于 2019-11-29 09:03:09
  我们最常需要的是汇总数据而不是把他们实际检索出来 确定表中行数(或满足某个条件或包含某个特定值的行数) 确定表中行组的和 找出表列(或所有行或特定列)的最大值,最小值和平均值    聚集函数是运行在行组上,计算和返回单个值的函数。 AVG([distinct] expr) 求平均值 COUNT({*|[distinct] } expr) 统计行的数量 MAX([distinct] expr) 求最大值 MIN([distinct] expr) 求最小值 SUM([distinct] expr) 求累加和 AVG,SUM   只用于单个列,为获得多个列的平均值要使用多个AVG, 表中列值为null的行不参与计算    要想列值为NULL的行也参与组函数的计算,必须使用 IFNULL函数对NULL值做转换。 COUNT count(*):返回表中行的数量,不管列表中包含NULL值还是非NULL值, distinct不能用于count(*) count(列):返回列值 非空的行 的数量 count(distinct 列):返回列值非空的、并且列值不重复的行的数量 count(expr):根据表达式统计数据 select UNIT as '单位', -> COUNT(TO_DAYS(DATE)=TO_DAYS(NOW()) or null) as '今日统计', -> COUNT

MySQL 常用的聚合函数

痞子三分冷 提交于 2019-11-29 09:02:57
[常用的聚合函数] mysql聚合函数一般用户统计一列值进行计算,然后返回计算结果。一般于分组group by 配合使用。 count //统计个数 select count(*) from test; //统计这列有多少条数据 max //最大值 select max(num) from test; //统计这列num字段的最大值 min //最小值 select min(mun) from test; //统计这列num字段的最小值 sum //求和 select sum(mun) from test; //统计这列num字段的所有数据之和 avg //平均数 select avg(mun) from test; //统计这列num字段的所有数据平均数 --------------------------------------------------------------------------------------------------------- 一、聚合函数(aggregation function)---也就是组函数   在一个行的集合(一组行)上进行操作,对每个组给一个结果。 常用的组函数: AVG([distinct] expr) 求平均值 COUNT({*|[distinct] } expr) 统计行的数量 MAX([distinct] expr)

MySQL最常用分组聚合函数

拈花ヽ惹草 提交于 2019-11-29 09:02:40
一、聚合函数(aggregation function)---也就是组函数   在一个行的集合(一组行)上进行操作,对每个组给一个结果。 常用的组函数: AVG([distinct] expr) 求平均值 COUNT({*|[distinct] } expr) 统计行的数量 MAX([distinct] expr) 求最大值 MIN([distinct] expr) 求最小值 SUM([distinct] expr) 求累加和   ①每个组函数接收一个参数   ②默认情况下,组函数忽略列值为null的行,不参与计算   ③有时,会使用关键字distinct剔除字段值重复的条数 注意:   1)当使用组函数的select语句中没有group by子句时,中间结果集中的所有行自动形成一组,然后计算组函数;   2)组函数不允许嵌套,例如:count(max(…));   3)组函数的参数可以是列或是函数表达式;   4)一个SELECT子句中可出现多个聚集函数。 实验演示用表: mysql> select * from salary_tab; +--------+---------+ | userid | salary | +--------+---------+ | 1 | 1000.00 | | 2 | 2000.00 | | 3 | 3000.00 | | 4 | NULL |

Oracle_SQL(2) 分组与聚合函数

跟風遠走 提交于 2019-11-29 09:02:32
一、聚合函数 1.定义:对表或视图的查询时,针对多行记录只返回一个值的函数。 2.用途:用于select语句,HAVING条件 二、5种聚合函数 1.SUM(n) 对列求和 select sum(sal) from emp; select deptno,sum(sal) from emp group by deptno; 2.AVG(n) 对列求平均值 select avg(sal) from emp; select deptno,avg(sal) from emp group by deptno; 3.MAX(n) 对列求最大值 select max(sal) from emp; select deptno,max(sal) from emp group by deptno; 4.MIN(n) 对列求最小值 select min(sal) from emp; select deptno,min(sal) from emp group by deptno; 5.COUNT(1) 记录行数 select COUNT(1) from emp; select deptno,COUNT(1) from emp group by deptno; select deptno,avg(sal),sum(sal)/COUNT(1) from emp group by deptno; count

mysql-聚合函数

拟墨画扇 提交于 2019-11-29 09:01:30
mysql-聚合函数 mysql中聚合函数其实只有5个, 1. COUNT() 函数:用来统计记录的条数; 2. SUM() 函数:是求和函数; 3. AVG() 函数:是求平均值的函数 ; 4. MAX() 函数是求最大值的函数 5. MIN() 函数是求最小值的函数 具体的实列: /* SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.1.49-community ********************************************************************* */ /*!40101 SET NAMES utf8 */; create table `t_grade` ( `id` int , `stuName` varchar (60), `course` varchar (60), `score` int ); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('1','张三','语文','91'); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('2','张三','数学','90'); insert into `t_grade` (`id`

mysql-聚合函数

安稳与你 提交于 2019-11-29 09:01:15
mysql中聚合函数其实只有5个, 1. COUNT() 函数:用来统计记录的条数; 2. SUM() 函数:是求和函数; 3. AVG() 函数:是求平均值的函数 ; 4. MAX() 函数是求最大值的函数 5. MIN() 函数是求最小值的函数 具体的实列: /* SQLyog 企业版 - MySQL GUI v8.14 MySQL - 5.1.49-community ********************************************************************* */ /*!40101 SET NAMES utf8 */; create table `t_grade` ( `id` int , `stuName` varchar (60), `course` varchar (60), `score` int ); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('1','张三','语文','91'); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('2','张三','数学','90'); insert into `t_grade` (`id`, `stuName`

MySQL中的聚合函数

北战南征 提交于 2019-11-29 09:00:41
创建student表 CREATE TABLE IF NOT EXISTS `student` ( `id` int(4) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(12) NOT NULL, `sex` enum('男','女') NOT NULL DEFAULT '男', `age` tinyint(4) NOT NULL DEFAULT '24', `edu` enum('初中','高中','大专','大本','研究生') NOT NULL DEFAULT '大专', `salary` float(8,2) unsigned NOT NULL DEFAULT '0.00', `bonus` float(6,2) unsigned NOT NULL DEFAULT '0.00', `city` varchar(32) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=55 ;    插入测试数据 INSERT INTO `student` (`id`, `name`, `sex`, `age`, `edu`, `salary`, `bonus`, `city`) VALUES (1, '洪荒少女', '女

Mysql分组和聚合函数

可紊 提交于 2019-11-29 09:00:01
## MySQL分组   * group by    group by语法可以根据给定字段对查询结果进行分组统计,相同属性的数据为一个组。通常,在每组中通过聚合函数来可以计算组中最大,最小等。    如果group by带有having,则只有满足having后面的条件的组才能输出。   注意: having 必须在group by之后。   * 与分组相关的聚合函数     count() 返回某个字段的值的行数     max() 求最大某字段最大的值     min() 求某字段最小值     avg() 返回某字段平均值     sum() 求某字段总和     group_concat() 将分组的结果拼接成字符串   * group by分组SQL语法     select 字段 from 表名 where where条件 group by 分组条件 having having条件 order by 字段 asc/desc limit offset, row     注意:     1. GROUP BY必须出现在WHERE 之后,ORDER BY 之前。     2. 除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY中给出     //错误,由于name字段没有写到group by之后       select count(id),name,sex

SQL中的行列转换

萝らか妹 提交于 2019-11-29 05:01:34
在项目中遇到一个需求,简化后的描述是这样的:一个表中存在一个表示种别的列和该种别的值的列 同一时间每种种别最多存在一条数据记录,同一时间可以存在多种种别的数据记录。现在想要查询指定时间段内的多种种别的数据,每种种别作为一列,按照时间排序打印到表格中。 最初采用join的方式,将每种种别的数据检索出来连接在一起。数据种别少的时候还能忍受,当种别增多 的时候,SQL文就相当长了,并且还是大段相似的SQL文,既不易维护也容易出错。因此考虑舍弃这种写法,调查寻找更好的写法。 一种比较简洁的方法是采用case或者decode,可以减少很多SQL文,另一种更简便的方式则是使用行列变换函数pivot和unpivot。为了说明不同的写法,下面会创建两个简化的表结构进行说明。 (注:pivot和unpivot在oracle11之后的版本支持。) 表 1: create table test1 ( addday varchar2(10), addtime varchar2(8), itemname varchar2(10), itemvalue number(4) ) 其中itemname的值是各种各样的种别,itemvalue是该种别对应的值。 表格中的值如下(值1): addday addtime itemname itemvalue 1 2016/07/18 09:00 ITEM4 60 2