mysql function 表名作为参数_mysql 常用的分组聚合函数

mysql 常用的分组聚合函数

1.聚合运算

一般情况下,需要的聚合数据(和,平均值,最大,最小等)并不总是存储在表中,但是可以执行存储数据的计算来获取它.

根据定义,聚合函数对一组值执行计算并返回单个值.

MySQL提供了许多聚合函数,包括AVG,COUNT,SUM,MIN,MAX等.除COUNT函数外,其它聚合函数在执行计算时会忽略NULL值.

有如下prices 表,分别进行聚合操作

 use test;-- 创建表 create table prices(    id int not null, count1 int, count2 int, count3 int, primary key (id)) engine=InnoDB default charset utf8mb4;insert into prices values(1,20,null,null),(2,50,500,null),(3,390,262,null),(4,28,234,null);select * from prices;
idcount1count2count3
120nullnull
250500null
3390262null
428234null

注意:

  • 函数不允许嵌套使用,比如:count(max(..))

  • 函数的参数可以是列或者函数表达式

  • 一个select语句可以出现多个聚合函数

avg():求平均值

  • 自动忽略null

 mysql root@192.168.101:test> select avg(count1),avg(count2),avg(count3) from pri                             ces;                                               +-------------+-------------+-------------+| avg(count1) | avg(count2) | avg(count3) |+-------------+-------------+-------------+| 122.0000    | 332.0000    | <null>      |+-------------+-------------+-------------+

count() :统计出现的满足条件的次数.

  • 不忽略null

 -- count 计数-- 返回count2中等于500的个数 select count(count2) from prices where count2=500;-- 返回总共的行数select count(*) from prices;-- 返回不重复的值select count(distinct count2) from prices;

max()\min()\sum()

  • 自动忽略null

 select max(count1),min(count2),sum(count3) from prices;

2.分组计算

基本语法:

 select  聚合函数(字段名)  from  表名where 查询条件group by 字段名having  过滤条件

1.gruop by

作用于聚合函数,根据给定的列或表达式的每一个不同的值将表中的行分成不同的组,使用函数返回每一组的统计信息.

 SELECT column_name, aggregate_function(column_name) -- aggregate_function 聚合函数FROM table_nameWHERE column_name operator valueGROUP BY column_name;
  • 出现在select子句中的单独的列,必须出现在group by 子句中作为分组列

  • 分组列可以不出现在select 子句中

  • 分组列可出现在select 子句中的一个复合表达式中

  • 如果group by 后面是一个复合表达式,那么在select子句中,它必须整体作为表达式的一部分才能使用

有如下员工表(db_employee):

 -- 创建员工表create table db_employee(    id int(11) not null auto_increment,    name varchar(20) not null,    date datetime not null,    singin tinyint(4) not null default 0 comment '登陆后台次数',    primary key (id)) engine=InnoDB default charset utf8;insert into db_employee values(1, 'Jack', '2016-04-19 15:26:02', 1),(2, 'Peny', '2016-04-11 15:26:02', 4),(3, 'Jony', '2016-04-12 15:26:02', 2),(4, 'Bob', '2016-04-13 15:26:02', 4),(5, 'Harry', '2016-04-15 15:26:02', 6),(6, 'Peny', '2016-04-17 15:26:02', 4);select * from db_employee;
idnamedatesingin
1Jack2016-04-19 15:26:021
2Peny2016-04-11 15:26:024
3Jony2016-04-12 15:26:022
4Bob2016-04-13 15:26:024
5Harry2016-04-15 15:26:026
6Peny2016-04-17 15:26:024

将数据表按名字进行分组,并统计每个人有多少条记录

 mysql root@192.168.101:test> select name,count(*) as number  from db_employee group by name;                                                         +-------+--------+| name  | number |+-------+--------+| Bob   | 1      || Harry | 1      || Jack  | 1      || Jony  | 1      || Peny  | 2      |+-------+--------+

将数据表按名字进行分组,并统计每个人登录多少次(分组求和)

 mysql root@192.168.101:test> select name,sum(singin) from db_employee group by name;                                                                 +-------+-------------+| name  | sum(singin) |+-------+-------------+| Bob   | 4           || Harry | 6           || Jack  | 1           || Jony  | 2           || Peny  | 8           |+-------+-------------+

更改数据,并先按照名字分组,在按照登陆次数分组(多组分)

 update db_employee set singin=5 where id = 6;select name,singin from db_employee group by name,singin;

gruop by: 首先将select语句得到一个结果集,然后按照分组字段,将具有相同分组字段的记录归类成一条记录.

2.having

语法:

 SELECT column_name, aggregate_function(column_name)FROM table_nameWHERE column_name operator valueGROUP BY column_nameHAVING aggregate_function(column_name) operator value;

where 子句比group by 先执行,而函数必须在gruop by 之后再执行,那么在group by 之后可以使用having 子句进行结果集的过滤

  • where 子句在分组前对记录进行过滤

  • having 子句在分组后对记录进行过滤

having 的用法

  • having 可以单独使用不和group by 配合,如果只有having ,表中所有的列分为一组

  • having 子句中可以使用 函数

  • having 子句中的列,那么出现在函数中,那么出现在group by 子句中,否则报错.

 -- 显示id大于2,并且按照人名进行排列,排列的结果要求大于4select name, sum(singin) as count from db_employee where id > 2 group by name having sum(singin) > 4;

0dc451ad8b1f4ea8e83a36fcd62d4844.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/346413.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java加减乘除运算顺序_java 实现加减乘除混合运算

初衷&#xff1a;解决小学一年级到四年级 基本加减乘除混合运算基本思路&#xff1a;表达式&#xff1a;10032-200(10000/5(100/2))此类表达式我们称之为中缀表达式(运算符在数字的中间),如果我们稍加转换&#xff0c;转化为100, 3, , 2, , 200, -, 10000, 5, /, 100, 2, /, , …

java integer valueof_对 Java Integer.valueOf() 的一些了解

从一道选择题开始分析选项A选项A中比较的是i01和i02&#xff0c;Integer i0159这里涉及到自动装箱过程&#xff0c;59是整型常量&#xff0c;经包装使其产生一个引用并存在栈中指向这个整型常量所占的内存&#xff0c;这时i01就是Integer 的引用。而int i0259由于int是基本类型…

java web 伪静态_【Java Web】使用URLRewrite实现网站伪静态

大部分搜索引擎都会优先考虑收录静态的HTML页面&#xff0c;而不是动态的*.jsp、*.php页面。但实际上绝大部分网站都是动态的&#xff0c;不可能全部是静态的HTML页面&#xff0c;因此互联网上大部分网站都会考虑伪静态——就是将*.jsp、*.php这种动态URL伪装成静态的HTML页面。…

使用Spring WebFlux从Corda节点流式传输数据

自上次发布以来已经有一段时间了&#xff0c;但我终于回来了&#xff01; 由于我仍在我的项目中&#xff0c;因此我将再次撰写有关使用Corda的文章。 这次&#xff0c;我们将不再关注Corda&#xff0c;而是将Spring与Corda结合使用。 更具体地说&#xff0c;Spring WebFlux。 为…

mysql 批量加索引_mysql优化:按期删数据 + 批量insert + 字符串加索引为何很傻

嗯&#xff0c;犯了一个很低级的错误&#xff0c;最近暴露出来了。html背景&#xff1a;mysql1. 内部平台&#xff0c;接口间断性无返回&#xff0c;查询日志注意到失败时&#xff0c;接口耗时达到4000(正常状态&#xff1a;100ms)git2. 增长日志打点&#xff0c;在关键步骤插入…

MySQL中引入存储引擎意义是_mysql学习九:存储引擎、存储过程和函数的引入

存储引擎&#xff1a;存储引擎是mysql特有的&#xff0c;共有7种&#xff0c;常用的有myisam、memory、innodb查看表的存储引擎&#xff1a;show create table 表名;修改表的存储引擎&#xff1a;alter table 表名 engine存储引擎名称;1.myisam存储引擎&#xff1a;可转换为压缩…

python土味情话_土味情话表情包下载

喵星人土味情话表情包是一款很甜的表情图片&#xff0c;现在的聊天模式三句话离不开表情包&#xff0c;而且小编带来的这款表情包非常的适合情侣日常撩&#xff0c;最新的土味情话&#xff0c;需要的朋友可以前来本站下载。土味情话大全一、“对不起。”“你永远都不要和我说对…

多云互操作性!=云服务聚合

多云定义为一种方法&#xff0c;它将来自多个云供应商的多个云&#xff08;公共云或私有云&#xff09;组合在一起。 但是&#xff0c;这不是来自不同供应商的各种服务的集合&#xff0c;它需要一种强制性的胶合剂–云不可知的方法&#xff0c;并在所有提供商之间实现互操作性。…

如何在Spring中将@RequestParam绑定到对象

您是否在请求映射方法中用RequestParam注释了多个参数&#xff0c;并认为它不可读&#xff1f; 当请求中需要一个或两个输入参数时&#xff0c;注释看起来非常简单&#xff0c;但是当列表变长时&#xff0c;您可能会感到不知所措。 您不能在对象内部使用RequestParam批注&…

webstorm前端调用后端接口_软件测试面试题:怎么去判断一个bug是前端问题还是后端问题...

大家好&#xff0c;在软件测试面试过程中&#xff0c;经常有面试官问到这个问题&#xff0c;那我们应该如何回答才好呢&#xff1f;少废话&#xff0c;直接看答案&#xff1a;答案&#xff1a;在页面上发现bug之后&#xff0c;要想判断这个问题属于后端还是前端&#xff0c;我就…

首次适应算法_CVPR 2020丨?商汤TSD目标检测算法获得Open Images冠军

编者按&#xff1a;此前&#xff0c;在文章《商汤科技57篇论文入选ICCV 2019&#xff0c;13项竞赛夺冠》里&#xff0c;商汤君报道了商汤科技荣获Open Images Object Detection Challenge 2019 冠军。由Google AI主办的Open Images大赛是目前通用物体检测和实例分割两个领域中数…

玩JDK 12的Switch表达式

在博客文章“操作中的JDK语言功能预览&#xff1a;切换表达式 ”中&#xff0c;我讨论了JEP 325 [“切换表达式&#xff08; 预览 &#xff09;”&#xff09;如何作为指定的“ 预览语言功能 ”的早期应用&#xff0c;如JEP 12所述。预览语言和VM功能”]。 JEP 325 适用于JDK 1…

python 验证码_4行Python代码生成图像验证码

点击上方蓝色字体&#xff0c;关注我们最近无意看到网上有人使用Python编写几十行代码生成图像验证码&#xff0c;感觉很是繁琐&#xff0c;这里为各位朋友推荐两种方法&#xff0c;使用4行Python代码即可生成验证码。1captcha库第1步&#xff1a;安装captcha库pip install cap…

python3 多线程_Python3多线程爬虫实例讲解

多线程概述多线程使得程序内部可以分出多个线程来做多件事情&#xff0c;充分利用CPU空闲时间&#xff0c;提升处理效率。python提供了两个模块来实现多线程thread 和threading &#xff0c;thread 有一些缺点&#xff0c;在threading 得到了弥补。并且在Python3中废弃了thread…

java多条件组合查询6_elasticsearch组合多条件查询实现restful api以及java代码实现

elasticsearch组合多条件查询实现restful api以及java代码实现实际开发中&#xff0c;基本都是组合多条件查询。elasticsearch提供bool来实现这种需求&#xff1b;主要参数&#xff1a;must文档 必须 匹配这些条件才能被包含进来。must_not文档 必须不 匹配这些条件才能被包含进…

基于java家教管理系统_基于jsp的家教信息管理-JavaEE实现家教信息管理 - java项目源码...

基于jspservletpojomysql实现一个javaee/javaweb的家教信息管理, 该项目可用各类java课程设计大作业中, 家教信息管理的系统架构分为前后台两部分, 最终实现在线上进行家教信息管理各项功能,实现了诸如用户管理, 登录注册, 权限管理等功能, 并实现对各类家教信息管理相关的实体…

如何从云功能调用外部REST API

在之前的博客文章中&#xff0c;我展示了如何创建您的第一个云功能 &#xff08;以及一个视频 &#xff09;。 您的云函数很可能需要调用外部REST API。 以下教程将向您展示如何创建此类功能&#xff08;非常简单&#xff09;。 登录到IBM Cloud帐户 点击目录 删除标签&…

机器学习分类算法_机器学习分类算法

人们曾在自身的神经元得到启发&#xff0c;将机器学习中给出的特征输入与权重之积作为输出与阈值作比较&#xff0c;得到0或者1的输出。这就是我们感知器的实现原理感知器在实现过程中的步骤如下&#xff1a;①将权值初始化称为一个很小的向量②迭代训练所有样本&#xff1a;计…

apache camel_Apache Camel –从头开始开发应用程序(第1部分/第2部分)

apache camel开始之前 前段时间&#xff0c;我写了一篇关于Spring Integration的教程&#xff0c;以演示如何在受现实发票处理系统启发的示例应用程序中使用Spring Integration。 我对此非常满意&#xff0c;因此我决定向您展示如何使用Apache Camel&#xff08;Spring Integra…

weblogic创建域后启动不了_摩托车淋雨后启动不了什么原因?如何解决?

图文是工作&#xff0c;视频是生活。大家好&#xff0c;我是 骑士分享 欢迎您的关注&#xff01;摩托车淋雨后启动不了什么原因&#xff1f;如何解决&#xff1f;这种现象对于电喷车型来说发生的几率并不大&#xff0c;原因就在于电喷车型的线路防水能力会更强&#xff0c;供油…