聚合函数

MySQL最常用分组聚合函数

安稳与你 提交于 2019-12-19 03:57:20
一、聚合函数(aggregation function)---也就是组函数   在一个行的集合(一组行)上进行操作,对每个组给一个结果。 常用的组函数:   ②默认情况下,组函数忽略列值为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 | | 5 | 1000.00 | +--------+---------+ 5 rows in set (0.00 sec) mysql> use TENNISmysql> show tables; +-------------------+ | Tables_in_TENNIS

五、多表连接查询——聚合函数

随声附和 提交于 2019-12-18 02:56:37
五、多表连接查询——聚合函数 1.什么是聚合函数 聚合函数对一组数据执行计算,集中生成汇总值。 2.常见的聚合函数有哪些? 一部分常见的数值处理函数。 聚合函数 描述 sum() 计算某列的总和 avg() 计算某列的平均值 max() 计算某列的最大值 min() 计算某列的最小值 count() 计算某列的行数 3.示例 (1)sum()函数: 计算一个字段中各个记录的总和。 <1>语法 select sum(某个字段/某个表达式) from 表名 where 条件表达式; <2>示例1:计算"张欣"的总成绩 select sum(chinese+math+english) as total_score from score where name='张欣'; (2)avg()函数: 计算一个字段的平均值。 <1>语法: select avg(某个字段/某个表达式) from 表名 where 条件表达式; <2>示例1:计算所有成绩的平均值 select avg(chinese),avg(math),avg(english) from score; (3)max()函数和min()函数: 求最大值和最小值函数。 示例: select max(chinese),min(chinese) from score; (4)count()函数: 计算列中值的个数。【计算某列有多少行】

MYSQL——聚合查询(count、avg...)

浪尽此生 提交于 2019-12-17 23:23:06
文章目录 聚合函数 COUNT SUM AVG平均值 MAX&MIN 使用聚合函数删除重复值(DISTINCT) 聚合函数 COUNT COUNT(*)会得到包含NULL的行数,星号是count函数特有的,其他函数不能使用星号 除count(*)以外,其他的聚合函数都会将NULL排除在外 COUNT(l列名)会得到除NULL以外的行数,即使对同一个表,count的参数不同,返回结果也会不同 SUM 数值类型的数据,计算时将null排除在外 AVG平均值 数值类型的数据,分子同sum相同,分母同样除去null MAX&MIN 适用于所有数据类型,参数为列名 使用聚合函数删除重复值(DISTINCT) 1.计算商品种类,可以先用distinct去重,再用count统计个数 2. 来源: CSDN 作者: 洛洛洛洛洛洛洛 链接: https://blog.csdn.net/weixin_44740082/article/details/103583656

sql语句select group by order by where一般先后顺序

老子叫甜甜 提交于 2019-12-17 15:55:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 写的顺序:select ... from... where.... group by... having... order by.. 执行顺序:from... where...group by... having.... select ... order by... 值得注意的是group by的用法: select 列a,聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列a ; select 列a,列b 聚合函数(聚合函数规范) from 表名 where 过滤条件 group by 列a , 列b 也就是说,我们从select里面展示的字段都是要用来分组的依据,如果是: select 列a,列b 聚合函数(聚合函数规范) from 表明 where 过滤条件 group by 列a having和where的用法区别: 1.having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。 2.where肯定在group by 之前,即也在having之前。 3.where后的条件表达式里不允许使用聚合函数,而having可以。 来源: oschina 链接: https://my.oschina.net/u/4049480/blog

GROUP BY的用法_无需整理

血红的双手。 提交于 2019-12-15 16:19:34
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在介绍GROUP BY 和 HAVING 子句前,我们必需先讲讲sql语言中一种特殊的函数:聚合函数,例如SUM, COUNT, MAX, AVG等。这些函数和其它函数的根本区别就是它们一般作用在多条记录上。 SELECT SUM(population) FROM bbc   这里的SUM作用在所有返回记录的population字段上,结果就是该查询只返回一个结果,即所有国家的总人口数。   通过使用GROUP BY 子句,可以让SUM 和 COUNT 这些函数对属于一组的数据起作用。当你指定 GROUP BY region 时, 属于同一个region(地区)的一组数据将只能返回一行值,也就是说,表中所有除region(地区)外的字段,只能通过 SUM, COUNT等聚合函数运算后返回一个值。   HAVING子句可以让我们筛选成组后的各组数据,WHERE子句在聚合前先筛选记录.也就是说作用在GROUP BY 子句和HAVING子句前. 而 HAVING子句在聚合后对组记录进行筛选。   让我们还是通过具体的实例来理解GROUP BY 和 HAVING 子句,还采用第三节介绍的bbc表。   SQL实例:   一、显示每个地区的总人口数和总面积: SELECT region, SUM(population),

数据库中where与having区别

给你一囗甜甜゛ 提交于 2019-12-15 16:19:21
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> having子句与where有相似之处但也有区别,都是设定条件的语句。 在查询过程中 where子句 优先级 > 聚合语句(sum,min,max,avg,count)优先级 > having子句 简单说来: where子句: select sum(num) as rmb from order where id>10 //只有先查询出id大于10的记录才能进行聚合语句 having子句: select reportsto as manager, count(*) as reports from employees group by reportsto having count(*) > 4 以northwind库为例.having条件表达示为聚合语句。肯定的说having子句查询过程执行优先级别低于聚合语句。 再换句说话说把上面的having换成where则会出错。统计分组数据时用到聚合语句。 对分组数据再次判断时要用having。如果不用这些关系就不存在使用having。直接使用where就行了。 having就是来弥补where在分组数据判断时的不足。因为where执行优先级别要快于聚合语句。 聚合函数,这是必需先讲的一种特殊的函数: 例如SUM, COUNT, MAX, AVG等

Group by与having理解

半腔热情 提交于 2019-12-15 16:19:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 注意:select 后的字段,必须要么包含在group by中,要么包含在having 后的聚合函数里。 1. GROUP BY 是分组查询, 一般 GROUP BY 是和聚合函数配合使用 group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要) 例如,有如下数据库表: A B 1 abc 1 bcd 1 asdfg 如果有如下查询语句(该语句是错误的,原因见前面的原则) select A,B from table group by A 该查询语句的意图是想得到如下结果(当然只是一相情愿) A B abc 1 bcd asdfg 右边3条如何变成一条,所以需要用到聚合函数,如下(下面是正确的写法): select A,count(B) as 数量 from table group by A 这样的结果就是 A 数量 1 3 2. Having where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,条件中不能包含聚组函数,使用where条件显示特定的行。 having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件显示特定的组

PostgreSQL之SELECT...GROUP BY...HAVING

a 夏天 提交于 2019-12-15 16:11:47
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1.SELECT...GROUP BY的使用 PostgreSQL9.3官方文档: http://www.postgres.cn/docs/9.3/sql-select.html#SQL-GROUPBY SELECT查询在通过了WHERE过滤器之后,生成的输出表可以继续用GROUP BY 子句进行分组,然后用HAVING子句删除一些分组行。 SELECT select_list FROM ... [WHERE ...] GROUP BY grouping_column_reference [, grouping_column_reference]... HAVING condition GROUP BY 子句 用于把那些在表中所列出的列上共享相同值的行聚集在一起。 这些列的列出顺序并没有什么关系。 效果是把每组共享相同值的行缩减为一个组行,它代表该组里的所有行。 这样就可以删除输出里的重复和/或计算应用于这些组的聚集。 比如: highgo=# create table tests1(id int primary key,name varchar,num int); highgo=# insert into tests1 values(1,'yy',3),(2,'ws',2),(3,'yy',6);

mySQL数据库(二)

我只是一个虾纸丫 提交于 2019-12-14 05:45:41
1.DQL:查询语句(重点掌握) 1.1 排序查询 语法 SELECT 字段名 FROM 表名 [ WHERE 条件 ] ORDER BY 字段名 [ ASC | DESC ] ; ASC: 升序,默认值 DESC: 降序 注意 如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。 例子 查询所有数据,使用年龄降序排序 select * from student order by age desc ; 查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩升序排序 select * from student order by age desc , math asc ; 补充案例 计算math 和 english总成绩 并按照总成绩降序排序 SELECT NAME , math + IFNULL ( english , 0 ) score FROM stu ORDER BY score DESC ; order by 总结 order by 子句后可以支持那些内容? 表中的字段 函数 order by 执行顺序? 最后再执行 除了limit语句 1.2 聚合函数 什么是sql函数 当我们学习编程语言的时候,经常会遇到函数。函数的好处是,它可以把我们经常使用的代码封装起来,需要的时候直接调用即可。这样既提高了编写代码的效率,又提高了可维护性

mysql ------(order by ,聚合函数,group by,limit)

大兔子大兔子 提交于 2019-12-10 14:11:37
-- 1:数据库的查询(排序:order by) -- SELECT * FROM 表名 ORDER BY 排序字段 ASC(升序)|DESC(降序); -- 1.1 使用价格排序:升序 SELECT * FROM product ORDER BY price ASC; SELECT * FROM product ORDER BY price ;-- 默认就是升序 -- 1.2 使用价格排序:降序``````` SELECT * FROM product ORDER BY price DESC; -- 1.3 使用category_id排序:降序 -- 如果是对字符串排序,则使用的是字典顺序: admain about; SELECT * FROM product ORDER BY category_id ASC; -- 1.4 使用pname排序:升序 SELECT * FROM product ORDER BY pname ASC; -- order by 排序只对数字和英文字符串有效,对汉字无效 -- 1.5 在价格排序(降序)的基础上,以分类排序(降序) SELECT * FROM product ORDER BY price DESC, category_id DESC; -- 1.6 显示商品的价格(去重复 distinct),并排序(降序) SELECT