聚合函数

# 聚合函数

做~自己de王妃 提交于 2019-11-29 01:55:06
聚合函数 聚合函数就是将多行数据转换成为一行的函数。需要注意的是他不能够在WHERE子句中使用。 求值的聚合函数 求值的聚合函数有五个,分别是: SUM AVG MAX MIN COUNT 通过名字很容易明白该函数的意思。 这里需要注意的点是 SUM 和 AVG 只能够用于数值型数据,同时在遇到NULL时,会将其忽略。而 MAX MIN 几乎可以用于所有的数据类型,例如字符以及日期。 COUNT 在使用中也有需要注意的地方就是对于 COUNT(*) 他不会忽略NULL,而当我们指定某一列为聚合键的时候,NULL将被忽略。 GROUP BY 他的作用是将数据分组。 到目前为止我们可以将SQL的语法顺序总结为: SELECT->FROM->WHERE->GROUP BY 不过我们需要注意的是,SQL的语法顺序与DBMS的解析执行顺序并不相同,MS的解析顺序为: FROM->WHERE->GROUP BY->SELECT 当然其中的 WHERE 以及 GROUP BY 不是必须的。 然后再看到 GROUP BY 。我的理解是,在 GROUP BY 这一步之前是对一整个数据表进行处理: 在他之后,系统将原本完整的数据表按照提供的聚合键拆分成为多个数据表,然后对每个数据表分别执行 SELECT 子句,之后再将执行结果整合到一起。 正确来讲,每个拆分出来的数据表SELECT后的结果应该只有一行

MySQL学习笔记(二)

廉价感情. 提交于 2019-11-28 08:31:54
MySQL普通查询 一般顺序 : select …聚合函数 from 表名 where … group by … having … order by … limit …; 1. 聚合函数 avg(字段名):该字段的平均值 max(字段名):该字段的最大值 min(字段名):该字段的最小值 sum(字段名):该字段所有记录的和 count(字段名):统计该字段记录的个数 eg1:找出表中攻击力最大值 mysql > select max ( attack ) from class_1 ; eg2:找出表中记录了多少人,一般使用 id 获取 mysql > select count ( id ) from class_1 ; eg3:找出攻击力大于 200 的英雄数量 mysql > select count ( id ) from class_1 where attack > 200 ; 2. group by 给查询结果进行分组 group by 后字段名必须要为 select 后的字段,查询字段和group by 后字段不一致,则必须对该字段进行聚合处理(聚合函数)。 eg1:计算每个国家的平均攻击力 mysql > select country , avg ( attack ) from sanguo group by country ; eg2:查询所有国家的男英雄中

SQL语言基础

*爱你&永不变心* 提交于 2019-11-28 04:43:26
一、数据库概述 数据库(DataBase,DB) :指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或应用共享的数据集合。(文件系统) 数据库管理系统(DataBase Management System,DBMS) :指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系统访问数据库中的数据。 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。 数据库:存储、维护和管理数据的集合。 数据库中一行记录与对象之间的关系。 列:字段 行:一条记录(实体) 二、sql概述 SQL:Structure Query Language。(结构化查询语言) SQL被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后来被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。 各数据库厂商都支持ISO的SQL标准。————普通话 各数据库厂商在标准的基础上做了自己的扩展。————方言 在SQL里只有单引号,没有双引号的概念 三、sql的分类 DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等; 【CREATE、 ALTER、DROP】 DML(Data Manipulation Language)

Mysql基本查询语句及方法

可紊 提交于 2019-11-28 03:40:35
在mysql中 查询一张表中的记录的时候    书写顺序是 : select * from 表名 where name='long' and age ='18'; 但是mysql中的执行顺序是   from 后面加表名 确定你是那张表   where 后面是条件 通过条件 来筛选这表的内容   select 后面是 你where筛选出的数据中的 某些字段 * 是所有字段    # 查询语句执行的结果也是一张表,可以看成虚拟表 我们创建一张 emp的员工表 当我们的字段特别多的时候 结果的排版可能会出现凌乱现象 我们可以在查询语句末尾 加上\G来规范查询结果 select * from 表名\G; 当我们遇到一个需求时 怎么来分析? 例如 1.查询id大于等于3小于等于6的数据    给你展示下实际操作 1.先确定 来自哪一张表 from emp 2. 筛选条件 where id >= 3 and id <=6; 3.select *    select * from emp where id >= 3 and id <= 6; select * from emp where id between 3 and 6; between 等价于id >= 3 and id <= 6 2.查询薪资是20000或者18000或者17000的数据 select id,name from emp

关于group by的用法

别等时光非礼了梦想. 提交于 2019-11-28 03:36:55
重新回顾并理解group by。 首先设计一张表,表名为test 然后执行以下SQL语句: select name from test group by name 获得执行结果: 可是为了能够更好的理解 “group by”多个列“ 和 ”聚合函数“ 的应用,我建议在思考的过程中,由表1到表2的过程中,增加一个虚构的中间表: 虚拟表3 。下面说说如何来思考上面SQL语句执行情况: 1.FROM test:该句执行后,应该结果和表1一样,就是原来的表。 2.FROM test Group BY name:该句执行后,我们想象生成了 虚拟表3, 如下所图所示,生成过程是这样的:group by name,那么找name那一列,具有相同name值的行,合并成一行,如对于name值为aa的,那么<1 aa 2>与<2 aa 3>两行合并成1行,所有的id值和number值写到一个单元格里面。 3.接下来就要针对 虚拟表3 执行Select语句了: (1)如果执行select 的话,那么返回的结果应该是虚拟表3,可是id和number中有的单元格里面的内容是多个值的,而关系数据库就是基于关系的, 单元格中是不允许有多个值的 ,所以你看,执行select 语句就报错了。 (2)我们再看name列,每个单元格只有一个数据,所以我们select name的话,就没有问题了

SQLite进阶-19.常用函数

一世执手 提交于 2019-11-27 22:04:58
文章目录 SQLite常用函数 SQLite常用函数 SQLite 有许多内置函数用于处理字符串或数字数据。 序号 函数 & 描述 1 SQLite COUNT 函数 SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。 2 SQLite MAX 函数 SQLite MAX 聚合函数允许我们选择某列的最大值。 3 SQLite MIN 函数 SQLite MIN 聚合函数允许我们选择某列的最小值。 4 SQLite AVG 函数 SQLite AVG 聚合函数计算某列的平均值。 5 SQLite SUM 函数 SQLite SUM 聚合函数允许为一个数值列计算总和。 6 SQLite RANDOM 函数 SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。 7 SQLite ABS 函数 SQLite ABS 函数返回数值参数的绝对值。 8 SQLite UPPER 函数 SQLite UPPER 函数把字符串转换为大写字母。 9 SQLite LOWER 函数 SQLite LOWER 函数把字符串转换为小写字母。 10 SQLite LENGTH 函数 SQLite LENGTH 函数返回字符串的长度。 11 SQLite sqlite_version 函数

java Mongondb聚合函数&去重

不羁的心 提交于 2019-11-27 14:53:09
1 去重: 2 3 通过distinct方法我们可以对指定字段进行去重,在mysql也有这个关键字 4 5 DBObject query = new BasicDBObject(); 6 mongoTemplate.getCollection("collectionName").distinct("去重字段名",query) 7 8 9 分组聚合: 10 11 利用aggregation对字段的不同值数量进行统计,例如如下: 12 13 统计字段为content,别名为value 14 15 Aggregation aggregation = Aggregation.newAggregation(Aggregation.group("Content").count().as("value")); 16 //查询条件 17 Criteria criteria = new Criteria().where("条件一").is("条件一"); 18 criteria.and("条件二").is("条件二"); 19 aggregation.match(criteria);List<Map> maps = mongoTemplate.getCollection("collectionName").aggregate(aggregation); 20 21 22 另一种写法 23 24

group by问题

谁说我不能喝 提交于 2019-11-27 12:14:30
在使用group by进行查询结果分组的时候,报错: 1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'goodsinfo.item.amount' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by 报错原因以及解决方法: 这里的mysql的sql模式采用了全模式匹配,也就是 sql_mode=only_full_group_by ,出现了依赖冲突。也就是说select后面的字段,除了聚合函数,都必须出现在group by 的后面。因为你是要利用某个字段进行分组,那么该字段就存在于select 后面。除了聚合函数select 后面的字段都应该要出现在group by 后面。 #执行以下sql语句以上错误 SELECT item.amount "订单数量",MONTH(d.order_date) orderDate FROM `order` d INNER JOIN orderitem item ON d.order_id=item.order_id

MySQL入门

六眼飞鱼酱① 提交于 2019-11-27 10:45:19
MySQL入门 1、MySQL的基本介绍     数据库(database),数据库是存储数据的仓库,本质是一个系统文件,我们可以对这个文件(数据库)数据进行增删改查操作(crud)。     数据是直接存在数据库中还是数据表中? 存在数据表中。     数据表结构及原理:          数据表:由行和列组成。             列:字段             行:记录 2、MySQL数据库的安装与卸载     安装:         在网上可以找到安装教程,按着安装就行,安装之前必须保证之前没有安装过mysql或已经卸载干净了。     卸载:         注意:如果MySQL卸载不干净,会导致再次安装的不成功。         1、首先找到控制面板,就程序给卸载         2、找到mysql的安装目录将其删除,         3、再去c盘将C:\ProgramData\目录下的MySQL文件夹给删除,         4、删除mysql的注册表,快捷键window+R搜索regedit进入注册表                      路径1:\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\eventlog\Application\MySQL             路径2:\HKEY_LOCAL