简单介绍MySQL中GROUP BY子句的使用

可以使用GROUP BY组值一列,并且如果愿意的话,可以将该列进行计算。使用COUNT,SUM,AVG等功能的分组列。

要了解GROUP BY子句考虑的EMPLOYEE_TBL的的表具有以下记录:

mysql> SELECT * FROM employee_tbl;
+------+------+------------+--------------------+
| id  | name | work_date | daily_typing_pages |
+------+------+------------+--------------------+
|  1 | John | 2007-01-24 |        250 |
|  2 | Ram | 2007-05-27 |        220 |
|  3 | Jack | 2007-05-06 |        170 |
|  3 | Jack | 2007-04-06 |        100 |
|  4 | Jill | 2007-04-06 |        220 |
|  5 | Zara | 2007-06-06 |        300 |
|  5 | Zara | 2007-02-06 |        350 |
+------+------+------------+--------------------+
7 rows in set (0.00 sec)

现在,假设根据上表,我们希望计算每一位员工工作的天数。
如果我们将编写一个SQL查询,如下所示,那么我们将得到下面的结果:

mysql> SELECT COUNT(*) FROM employee_tbl;
+---------------------------+
| COUNT(*)         |
+---------------------------+
| 7             |
+---------------------------+

但是,这不是我们的目的服务,我们要显示输入的每个人单独的页面总数。这是通过使用聚合函数一起用GROUP BY子句如下:

mysql> SELECT name, COUNT(*)
  -> FROM  employee_tbl
  -> GROUP BY name;
+------+----------+
| name | COUNT(*) |
+------+----------+
| Jack |    2 |
| Jill |    1 |
| John |    1 |
| Ram |    1 |
| Zara |    2 |
+------+----------+
5 rows in set (0.04 sec)
(0)

相关推荐

  • 使用mysql的disctinct group by查询不重复记录

    有个需求,一直没有解决,在google上找了半天,给出的方案没有一个能用了,最后鬼使神差搞定了.  是这样的,假设一个表: id   f_id    value    1     2         a    2     2         b    3     5         c    4     9         c    5     9         a    6     6         d id   f_id    value 1     2         a 2     

  • Mysql的GROUP_CONCAT()函数使用方法

    语法: GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val]) 下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据. SQL代码 复制代码 代码如下: CREATE TABLE student_courses (          stude

  • mysql分组取每组前几条记录(排名) 附group by与order by的研究

    --按某一字段分组取最大(小)值所在行的数据 复制代码 代码如下: /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b 2 b2b2b2b2 b 4 b4b4 b 5 b5b5b5b5b5 */ --创建表并插入数据: 复制代码 代码如下: create table tb(name varchar(10),val int,memo varchar(20)

  • 简单介绍MySQL中GROUP BY子句的使用

    可以使用GROUP BY组值一列,并且如果愿意的话,可以将该列进行计算.使用COUNT,SUM,AVG等功能的分组列. 要了解GROUP BY子句考虑的EMPLOYEE_TBL的的表具有以下记录: mysql> SELECT * FROM employee_tbl; +------+------+------------+--------------------+ | id | name | work_date | daily_typing_pages | +------+------+----

  • 简单介绍MySQL中的事务机制

    从一个问题开始 最近银行这个事情闹的比较厉害啊,很多储户的钱放在银行,就不翼而飞了,而银行还不管不问,说是用户的责任,打官司,用户还能输了,这就是"社会主义".咱还是少发牢骚,多种树,莫谈国事. 说到银行存钱,就不得不说一下从银行取钱这件事情,从ATM机取钱这件简单的事情,实际上主要分为以下几个步骤: 登陆ATM机,输入密码: 连接数据库,验证密码: 验证成功,获得用户信息,比如存款余额等: 用户输入需要取款的金额,按下确认键: 从后台数据库中减掉用户账户上的对应金额: ATM吐出钱:

  • 简单介绍MySQL中索引的使用方法

    数据库索引是一个数据结构,提高操作的速度,在一个表中可以使用一个或多个列,提供两个快速随机查找和高效的顺序访问记录的基础创建索引. 在创建索引时,它应该被认为是将SQL查询的那些列上创建一个或多个索引的列. 实际上,指数也保持主键或索引字段和指针的实际表中每条记录的表型. 用户无法看到索引,它们只是用来加快查询速度,将用于数据库搜索引擎找到的记录速度非常快. INSERT和UPDATE语句表上的索引需要更多的时间,成为快速对这些表的SELECT语句.究其原因是,当进行插入或更新,数据库以及需要惰

  • mysql中group by与having合用注意事项分享

    group by函数应该的使用应该是SELECT 列表中指定的每一列也必须出现在 GROUP BY 子句中,除非这列是用于聚合函数,但是今天帮同事调试一个mysql中的group by函数,让我大跌眼镜,当时感觉不可思议,然后回来做了个简化版试验,试验过程如下: mysql表结构 复制代码 代码如下: mysql> desc t;+---+----–+--+-–+---+---+| Field | Type | Null | Key | Default | Extra |+---+----–+-

  • 简单介绍java中equals以及==的用法

    简单介绍 equals方法是java.lang.Object类的方法有两种用法说明: 一.对于字符串变量来说,使用"=="和"equals()"方法比较字符串时,其比较方法不同. 1."=="比较两个变量本身的值,即两个对象在内存中的首地址.(java中,对象的首地址是它在内存中存放的起始地址,它后面的地址是用来存放它所包含的各个属性的地址,所以内存中会用多个内存块来存放对象的各个参数,而通过这个首地址就可以找到该对象,进而可以找到该对象的各个属

  • 简单了解 MySQL 中相关的锁

    本文主要是带大家快速了解 InnoDB 中锁相关的知识 基础概念解析和RocketMQ详细的源码解析 http://xiazai.jb51.net/202105/yuanma/RocketMQ_jb51.rar 为什么需要加锁 首先,为什么要加锁?我想我不用多说了,想象接下来的场景你就能 GET 了. 你在商场的卫生间上厕所,此时你一定会做的操作是啥?锁门.如果不锁门,上厕所上着上着,啪一下门就被打开了,可能大概也许似乎貌似有那么一丁点的不太合适. 数据也是一样,在并发的场景下,如果不对数据加锁

  • 一文介绍mysql中TINYINT取值范围

    目录 项目场景: 问题描述: 原因分析: 解决方案: 项目场景: 最近在开发过程中,看见表设计中是thinyint字段,但对于它的范围产生了好奇 问题描述: 当我们填写超过128数值的时候,该字段就会报以下错误 Cause:com.mysql.jdbc.MysqlDataTruncation:Data truncation:Out of range value for column 'priority' at row 1; 原因分析: 从 -2^7 (-128) 到 2^7 - 1 (127)

  • 简单介绍Python中的几种数据类型

    大体上把Python中的数据类型分为如下几类: Number(数字) 包括int,long,float,complex String(字符串) 例如:hello,"hello",hello List(列表) 例如:[1,2,3],[1,2,3,[1,2,3],4] Dictionary(字典) 例如:{1:"nihao",2:"hello"} Tuple(元组) 例如:(1,2,3,abc) Bool(布尔) 包括True.False 由于Pyt

  • 简单谈谈MySQL中的int(m)

    我们在设计表的时候,如果碰到需要设置int(整型)的时候,通常会按照惯例(大家都这样写)设置成int(11).那么这里为什么是11呢?代表的又是什么呢? 以前我一直以为这里是在限制int显示的宽度,后来仔细研究和通过上网查询发现,事实并不是那样的. 确切的来说,这里的"宽度"只是一个"预期值",它所代表的仅仅是你在设计数据表结构时,想让该列日后显示的值宽度为多少,但是具体存入值的宽度多少不会受任何影响. 当然,它的作用不仅如此,在存入数据的时候,还是有一定区别的,这

  • 详细介绍mysql中limit与offset的用法

    目录 mysql limit与offset用法 附:Mysql limit offset用法举例 总结 有的时候我们在学习或者工作中会使用到SQL语句,那么介绍一下limit和offset的使用方法. mysql limit与offset用法 mysql里分页一般用limit来实现,例如: 1.select* from user limit 3 表示直接取前三条数据 2.select * from user limit 1,3; 表示取1后面的第2,3,4三条条数据 3.select * fro

随机推荐