聚合函数

SQL聚合函数

ぃ、小莉子 提交于 2019-12-10 03:24:29
聚合函数对一组值计算后返回单个值。除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null)。所有的聚合函数均为确定性函数。即任何时候使用一组相同的输入值调用聚合函数执行后的返回值都是相同的,无二义性。T-SQL提供的聚合函数一共有13个之多。   聚合函数通常会在下列场合使用:    1、select语句的选择列表,包括子查询和外部查询。    2、使用compute或compute by产生汇总列时。    3、having子句对分组的数据记录进行条件筛选。 聚合函数    1、平均值AVG  AVG函数用于计算精确型或近似型数据类型的平均值,bit类型除外,忽略null值。AVG函数计算时将计算一组数的总和,然后除以为null的个数,得到平均值。  语法结构:   avg( [ all | distinct ] expression )    all:为默认值,表示对所用的数据都计算平均值。  distinct:每个值的唯一值计算平均值,不管相同的值出现多次,多个行相同的值仅仅出现一次作为计算。  expression:精确或近似值的表达式。表达式内部不允许使用子查询和其他聚合函数。  示例:   select avg(distinct age) from person -- 查询person表里的年龄的平均值,相同值只计算一次    2、最小值MIN

sql语句中常用命令区别

天涯浪子 提交于 2019-12-07 18:49:12
1.where和having的区别: Where 是一个约束声明,使用Where约束来自 数据库 的数据,Where是在结果返回之前起作用的,Where中不能使用聚合函数。 Having是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。 在查询过程中聚合语句(sum,min,max,avg,count)要比having子句优先执行。而where子句在查询过程中执行优先级高于聚合语句。 Having 这个是用在聚合函数的用法。当我们在用聚合函数的时候,一般都要用到GROUP BY 先进行分组,然后再进行聚合函数的运算。运算完后就要用到HAVING 的用法了,就是进行判断了,例如说判断聚合函数的值是否大于某一个值等等。 2.order by 、 group by 、 ha ving 的用法区别 order by 从英文里理解就是行的 排序 方式, 默认的为升序 。 order by 后面必须列出排序的 字段名 ,可以是多个字段名。 group by 从英文里理解就是 分组 。必须有 “ 聚合函数 ” 来配合 才能使用,使用时至少需要一个分组标志字段。 group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要) 什么是 “ 聚合函数 ” ? 像 sum() 、

SQL语句中:where、having、group by的几个知识点

醉酒当歌 提交于 2019-12-06 08:17:55
1.where   where后边不能使用聚合函数,例如:max(最大)、min(最小)、sum(求和)、avg(平均)等   where是在查询数据结果返回之前,对数据库中的查询条件进行约束   where的执行顺序是在聚合函数之前 2.having   having后边可以使用聚合函数   having是在数据库返回结果之后起作用的   having用于分组筛选 3.group by   与聚合函数一起使用 来源: https://www.cnblogs.com/banml/p/11971121.html

MySQL数据库(二)——SQL

让人想犯罪 __ 提交于 2019-12-06 02:21:59
一、SQL的概念 1.什么是SQL 结构化查询语言(structured query language)简称SQL,SQL语句就是对数据库进行操作的一种语言。 2.SQL的作用 通过SQL语句我们可以方便的操作数据库中的数据、表、数据库。SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。 3.SQL语句的分类 (1)DDL(Data Definition Language)数据定义语言 用于定义数据库对象:数据库、表、列等。关键字:create、drop、alter等。 (2)DML(Data Manipulation Language)数据操作语言 用来对数据库中表的数据进行增删改。关键字:insert、delete、update等。 (3)DQL(Data Query Language)数据查询语言 用于查询数据库中表的记录(数据)。关键字:select、where等。 (4)DCL(Data Control Language)数据控制语言 用于定义数据库的访问权限和安全级别,及创建用户 。关键字:GRANT、REVOKE等。 4.SQL通用语法 SQL语句可以单行或多行书写,以分号结尾。 可使用空格和缩进来增强语句的可读性。 MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。例如:SELECT * FROM

聚合查询 分组 F与Q查询

烂漫一生 提交于 2019-12-05 22:38:55
目录 一.orm补充查询 聚合查询 1-1 分组查询 1-2 F与Q查询 1-3 一.orm补充查询 聚合查询 1-1 ​ Max Min Sum Avg Count ​ 在 mysql 中聚合函数必须用在分组之后的 没有分组其实默认整体就是一组 ​ 在 django 中如果想使用聚合函数必须先使用 关键字 aggregate ​ 还需要导入模块 from django.db.models import Max, Min, Avg, Sum, Count # 温馨提示 只要跟数据库有关的功能 基本都在 db.models里面 或者 db里面 ​ 使用方法: 1.赛选出价格最高的书籍 book_obj = models.Book.object.aggregate(mr=Max('price')) print(book_obj) # 拿到是一个字典 key为mr mr就是价格 2.求书籍总价 book_obj = models.Book.object.aggregate(sm=Sum('price')) print(book_obj) # {'sm': Decimal('15999.99')} 3.全部一起使用 # 不起名字 book_obj = models.Book.object.aggregate(Max('price'),Sum('price'),..... ) #

模糊查询聚合函数以及查询条件对象的使用

二次信任 提交于 2019-12-05 20:23:47
接上篇 前面操作相同 数据库相同 一、模糊查询 示例 通过用户名查询用户 1、接口中添加相应的抽象方法 / 模糊查询 查询结果封装成List * */ List findByName(String username); 2、在映射文件中进行相应的配置 3、添加测试类 @Test public void testFindByName(){ IUserDao userDao = session.getMapper(IUserDao.class); //因为配置映射文件是没有指明模糊查询的标志 所以在测试类中要进行说明 添加%的标志 List users = userDao.findByName("%王%"); //List users = userDao.findByName("王"); for(User user:users){ System.out.println(user); } } 测试结果: User{id=41, username='老王', sex='男', birthday=Tue Feb 27 17:47:08 CST 2018, address='北京'} User{id=43, username='小王', sex='女', birthday=Sun Mar 04 11:34:34 CST 2018, address='深圳'} User{id=45,

hive聚合函数

大憨熊 提交于 2019-12-05 19:38:34
★聚合函数 count,sum,min,max,avg var_pop(col) 返回指定列的方差 var_samp(col) 返回指定列的样本方差 stddev_pop(col) 返回指定列的偏差(标准差) stddev_pop = stddev stddev_samp(col) 返回指定列的样本偏差(标准差) covar_pop(col1, col2) 两列数值协方差 如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值; 如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值; 如果X与Y是统计独立的,那么二者之间的协方差就是0 covar_samp(col1, col2) 两列数值样本协方差 corr(col1, col2) 返回两列数值的相关系数(偏差协方) percentile(BIGINT col, p) 返回数值区域的百分比数值点。0<=P<=1,否则返回NULL,不支持浮点型数值。 第p百分位数,大约有p%的数据项的值比第p百分位数小 percentile(BIGINT col, array(p1 [, p2]…)) 返回类型也为array<double>,其中为对应的百分位数 percentile_approx(DOUBLE col, p [, B]) 近似中位数函数(percentile的近似值) 参数B控制内存消耗的近似精度,B越大

Group By 语句结合聚合函数

爷,独闯天下 提交于 2019-12-05 16:04:11
在mysql中,group by 语句可以省略聚合函数 假设有一个表 info 身份证 姓名 idcard1 name1 idcard2 name2 idcard3 name1 使用如下sql进行查询 select 身份证,姓名 from info group by 姓名; 按照常理讲,我们会认为这条语句会出错,因为当两个相同的姓名合并成一条记录的时候,我们需要告诉数据库如果身份证不同的时候应该显示谁。 但是这条语句居然正常工作,结果是冲突身份证号中的一个。 具体解释可以参考 stackoverflow的回答 。 这种机制的好处包括 - 很多时候我们知道两个表是一对一关联的时候,join操作以后就可以通过group by来简单对某些字段去重。 - 有时候需要一些随机数据属性 不好之处在于不确定性会产生隐藏的bug 在postgres中,聚合函数必须要有 select max (身份证),姓名 from info group by 姓名; 这里会取相同姓名的最大的身份证,相比于mysql,并没有增加什么语法难度,但是结果更可控 来源: CSDN 作者: Vieri_32 链接: https://blog.csdn.net/Vieri_32/article/details/48266587

django-ORM聚合函数

◇◆丶佛笑我妖孽 提交于 2019-12-05 11:36:04
models.py的模型结构 # -*- coding: UTF-8 -*- from django.db import models class Author(models.Model): "作者模型" name = models.CharField(max_length=100) age = models.IntegerField() email = models.EmailField() class Meta: #该名称不能更改 db_table = 'author' #映射到数据库中为你自定义的名字,不设置这个默认为 包名_表名 映射到数据库 class Publisher(models.Model): "出版社模型" name = models.CharField(max_length=300) class Meta: db_table = 'publisher' class Book(models.Model): "book模型" name = models.CharField(max_length=300) pages = models.IntegerField() price = models.FloatField() rating = models.FloatField() author = models.ForeignKey(Author,on_delete =

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

百般思念 提交于 2019-12-05 05:22:44
聚合函数 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