【MySQL聚合查询】轻松实现数据统计

这篇具有很好参考价值的文章主要介绍了【MySQL聚合查询】轻松实现数据统计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、聚合查询

聚合查询:行和行之间的运算

1.1 聚合函数

常见的聚合函数:

  • count:数量

  • sum:求和

  • avg:求平均值

  • max:最大值

  • min:最小值

1.2 聚合函数的使用

1.2.1 count 函数

现在有一个 class 表:

【MySQL聚合查询】轻松实现数据统计

现在我们就用 count 来统计 class 表中有多少个班级

-- select count(id) from class;
select count(*) from class;
+----------+
| count(*) |
+----------+
|        3 |
+----------+

1.2.2 sum 函数

现在有一个 score 表:

【MySQL聚合查询】轻松实现数据统计

现在我们就用 sum函数来求 language 成绩的总和

select sum(language) from score;
+---------------+
| sum(language) |
+---------------+
|        283.50 |
+---------------+

1.2.3 avg 函数

现在有一个 score 表:

【MySQL聚合查询】轻松实现数据统计

现在我们就用 avg函数来求 language 成绩的平均值

select avg(language) from score;
+---------------+
| avg(language) |
+---------------+
|     94.500000 |
+---------------+

1.2.4 max 函数

现在有一个 score 表:

【MySQL聚合查询】轻松实现数据统计

现在我们就用 max 函数来求 language 成绩中的最大值

select max(language) from score;
+---------------+
| max(language) |
+---------------+
|         97.80 |
+---------------+

1.2.5 min 函数

现在有一个 score 表:

【MySQL聚合查询】轻松实现数据统计

现在我们就用 min 函数来求 language 成绩中的最小值

select min(language) from score;
+---------------+
| min(language) |
+---------------+
|         89.50 |
+---------------+

1.3 group by 子句

1.3.1 group by 的使用

group by 可以对表中的行进行分组查询

不用group by 分组,相当于就只有一组,把所有的行进行聚合

引入 group by 就可以针对不同的组,来分别进行聚合

现在有一张 salarytable 工资表:

【MySQL聚合查询】轻松实现数据统计

查询每个职位的平均工资:

select role,avg(salary) from salarytable group by role;
+--------+------------------+
| role   | avg(salary)      |
+--------+------------------+
| 服务员 |      6000.000000 |
| 程序猿 |     22500.000000 |
| 老板   | 110000000.000000 |
+--------+------------------+

如果不带聚合函数的普通查询,是否能用 group by 呢?

答:可以,但是查询出来的结果是每个分组的第一条记录

select * from salarytable group by role;
+----+------+--------+--------------+
| id | name | role   | salary       |
+----+------+--------+--------------+
|  5 | 赵六 | 服务员 |      6000.00 |
|  3 | 张三 | 程序猿 |     20000.00 |
|  1 | 马云 | 老板   | 100000000.00 |
+----+------+--------+--------------+

1.3.2 指定条件的分组查询

分组查询,可以指定条件,通常使用 where 和 having 进行指定条件

where 和 having 的区别:

  • 分组之前,指定条件。先筛选,再分组,使用 where

  • 分组之后,指定条件。先分组,再筛选,使用 having

注:在一条SQL语句中,分组之前和之后可以同时指定条件

1.分组之前,指定条件

select role,avg(salary) from salarytable where role !='程序猿' group by role;
+--------+------------------+
| role   | avg(salary)      |
+--------+------------------+
| 服务员 |      6000.000000 |
| 老板   | 110000000.000000 |
+--------+------------------+

画图分析:

【MySQL聚合查询】轻松实现数据统计

2.分组之后,指定条件

select role,avg(salary) from salarytable group by role having role != '老板';
+--------+--------------+
| role   | avg(salary)  |
+--------+--------------+
| 服务员 |  6000.000000 |
| 程序猿 | 22500.000000 |
+--------+--------------+

画图分析:文章来源地址https://www.toymoban.com/news/detail-456775.html

【MySQL聚合查询】轻松实现数据统计

到了这里,关于【MySQL聚合查询】轻松实现数据统计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot Elasticsearch7.6.2实现创建索引、删除索引、判断索引是否存在、获取/添加/删除/更新索引别名、单条/批量插入、单条/批量更新、删除数据、递归统计ES聚合的数据

    注意:我的版本是elasticsearch7.6.2、spring-boot-starter-data-elasticsearch-2.5.6 引入依赖 有时候你可能需要查询大批量的数据,建议加上下面配置文件

    2024年02月13日
    浏览(70)
  • 【100天精通Python】Day57:Python 数据分析_Pandas数据描述性统计,分组聚合,数据透视表和相关性分析

    目录 1 描述性统计(Descriptive Statistics) 2 数据分组和聚合 3 数据透视表 4 相关性分析

    2024年02月07日
    浏览(56)
  • 数据库性能测试实践:慢查询统计分析

    查看是否开启慢查询 mysql show variables like \\\'%slow%’; 如图所示: 系统变量log_slow_admin_statements 表示是否将慢管理语句例如ANALYZE TABLE和ALTER TABLE等记入慢查询日志 启用log_slow_extra系统变量 (从MySQL 8.0.14开始提供)将导致服务器将几个额外字段写入日志 Log_slow_slave_statements 从库默认

    2024年02月07日
    浏览(55)
  • 使用JOIN查询数据重复,怎么办?使用count统计怎么写SQL?

    比如现在有两个表tbl_a和tbl_b,如下: tbl_a id name 1 Bruce 2 Mike 3 Angela tbl_b id a_id :-: :-: 1 1 2 1 3 2 4 3 5 3 6 3 这时候我们如果联查的话,就会出现重复数据: 这样查出来的数据就会像下面这样: id name 1 Bruce 1 Bruce 2 Mike 3 Angela 3 Angela 3 Angela 去重的方法有三种: 一、distinct 二、group

    2024年02月16日
    浏览(51)
  • Mysql按小时进行分组统计数据

    目录 前言 按1小时分组统计 按2小时分组统计 按X小时分组统计 统计数据时这种是最常见的需求场景,今天写需求时发现按2小时进行分组统计也特别简单,特此记录下。 sql: 返回值: 没啥好说的,直接使用 hour() 函数获取时间字段的小时部分进行分组统计即可 sql: 返回值:

    2024年02月13日
    浏览(43)
  • MySQL时间分组:按小时统计数据(mysql按小时分组)

    MySQL时间分组是一类涉及MySQL数据库的SQL语句,能够以小时对数据进行分组统计。 比如,如果你想根据一定的时间间隔,把MySQL数据库中的记录分成几组,那么MySQL时间分组技术就派上用场了。 MySQL时间分组主要使用MySQL语句YEAR(), WEEK(), HOUR()和GROUP BY来实现,按小时统计数据实

    2024年02月12日
    浏览(53)
  • 数据处理与统计分析——MySQL与SQL

    数据库:DB(DataBase) 概念 :数据仓库,软件,安装在操作系统之上 作用 :存储数据,管理数据 关系型数据库:SQL(Structured Query Language) MySQL、Oracle、Sql Server、DB2、SQLlite 通过表和表之间,行和列之间的关系进行数据的存储 通过外键关联来建立表与表之间的关系 非关系型

    2024年02月12日
    浏览(41)
  • mysql统计近7天数据量,,按时间戳分组

    可以使用以下 SQL 语句来统计近7天的数据量,并按时间戳分组。如果某一天没有数据,则将其填充为0。 解释说明: DATE_FORMAT(FROM_UNIXTIME( timestamp ), \\\'%Y-%m-%d\\\') AS date 将时间戳转换为日期格式,例如 2021-03-01。 COUNT(*) AS count 统计每天数据的数量。 WHERE timestamp = UNIX_TIMESTAMP(DATE_SUB

    2024年02月13日
    浏览(57)
  • MYSQL按照小时、按天、按月分组统计,无数据补0

    在开发过程中,写统计接口时,总会遇到按时、按天、按月统计,无数据进行补零的业务需求 现在市面既有补0的做法;也有不补0的做法: 不补0对于数据统计来说简洁明了,一个单表分组查询完事。(也就是在前端展示时,某个时间没有数据则不展示该时间,对于用户来说,

    2024年02月03日
    浏览(39)
  • Hadoop3.0大数据处理学习4(案例:数据清洗、数据指标统计、任务脚本封装、Sqoop导出Mysql)

    直播公司每日都会产生海量的直播数据,为了更好地服务主播与用户,提高直播质量与用户粘性,往往会对大量的数据进行分析与统计,从中挖掘商业价值,我们将通过一个实战案例,来使用Hadoop技术来实现对直播数据的统计与分析。下面是简化的日志文件,详细的我会更新

    2024年02月08日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包