聚合函数

MySQL最常用分组聚合函数

China☆狼群 提交于 2019-11-26 16:37:44
一、 聚合函数 ( 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 |

MySQL使用聚合函数查询

只愿长相守 提交于 2019-11-26 16:37:19
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`, `course`, `score`) values('3','张三','英语','87'); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('4','李四','语文','79'); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values('5','李四','数学','95'); insert into `t_grade` (`id`, `stuName`, `course`, `score`) values(

MySQL数据库聚合函数

拥有回忆 提交于 2019-11-26 16:36:50
+++++++++++++++++++++++++++++++++++++++++++ 标题:MySQL数据库聚合函数 时间:2019年2月25日 内容:MySQL数据库聚合函数 重点:MySQL数据库聚合函数 +++++++++++++++++++++++++++++++++++++++++++ 1. 学习环境 ######################################################## -- MySQL dump 10.13 Distrib 5.7.19, for Linux (x86_64) -- -- Host: localhost Database: test -- ------------------------------------------------------ -- Server version 5.7.19-log /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*

oracle decode与聚合函数连用bug

陌路散爱 提交于 2019-11-26 16:20:46
在写sql过程中竟然发现了一个oracle中decode和聚合函数连用的bug. 来说一下: 先建一张临时的测试表 create table test (id number,value varchar2(10)); insert into test values(1,0); insert into test values(2,50); insert into test values(3,100); insert into test values(4,200); select a.*,a.rowid from test a; 查询结果如下: 在这里求value列的最大值,毋庸置疑的是200, 求value列的最小值,一定是0. 但是: select max(decode(value,0,null,value)) from test; 用这条sql查询出的最大值确是50. select min(decode(value,0,null,value)) from test; 用这条sql查询出来的最小值确是100. 估计就是oracle的bug. 似乎是只在固定几个值时发生这种情况,0、50、100、NULL,decode与max、min连用。 来源: https://www.cnblogs.com/DreamFather/p/11326396.html

hive操作·自定义聚合函数udaf

我怕爱的太早我们不能终老 提交于 2019-11-26 13:55:21
自定义UDAF操作 自定义类需要继承AbstractGenericUDAFResolver类,或者实现GenericUDAFResolver2的接口,AbstractGenericUDAFResolver类本身也是实现GenericUDAFResolver2的接口,主要作用是实现参数类型检查和操作符重载 1、自定义类中需要根据需求重写 public GenericUDAFEvaluator getEvaluator(TypeInfo[] parameters) throws SemanticException { return new TotalNumOfLettersEvaluator(); } 主要目的是校验UDAF的入参个数和入参类型并返回Evaluator对象。调用者传入不同的参数时,向其返回不同的Evaluator或者直接抛出异常。这个重写的方法getEvaluator在udaf中扮演了对传入参数的检查,以及返回一个新的类进行udaf操作的作用。 2、使用的参数类型ObjectInspector 使用ObjectInspector类将传入参数序列化为不同的数据格式,达到数据流转无障碍的目的。 ObjectInspector类是在Serde包下实现序列化和反序列化的辅助类。Serde一方面用在针对inputformat中RecordReader读取数据的解析和最终结果的保存

MySQL数据库:聚合函数的使用

倾然丶 夕夏残阳落幕 提交于 2019-11-25 16:59:12
聚合函数 max() 最大值 min() 最小值 avg() 平均值 sum() 求和 count() 符合条件数据的数目 聚合函数不能嵌套使用 # 在统计时字段内没有满足条件的数值只有count返回数值0或者其他,而其余四个聚合函数返回null; # 对于聚合函数的参数,很多时候使用字段名来表示,那么这个时候,该字段内的null值不参与统计 count(*) 显示表中符合条件的信息数目,不考虑某字段出现null值 select count(cID),avg(elScore) from elogs; select count(elNo),avg(elScore) from elogs; select count(1),avg(elScore) from elogs; select count(*),avg(elScore) from elogs; 转换编码 # 中文排序想要通过拼英排序的话需要转换编码 convert (tName using gbk) 去重复值 # distinct 后面如果有多个字段,则是针对这些字段值组合后的去重 select distinct sID from Elogs; # 先去重,再统计 select count(distinct cID) from Elogs; = 只有确定了一个值才能用 多条值用in 来源: https://www.cnblogs