精华内容
下载资源
问答
  • 聚集函数
    2022-01-15 09:27:02

    聚集函数(aggregate function)是以值集集合或多重集合)为输入返回单个值的函数。SQL提供了五个标准的固有聚集函数。

    • 平均值:avg
    • 最小值:min
    • 最大值:max
    • 总和:sum
    • 计数:count
      sumavg的输入必须是数字集,但其他运算可以作用在非数字数据类型的集合上,比如字符串

    基本聚集

    有时在计算聚集函数前必须先去重。如果确实想去除重复项,可在聚集表达式中使用关键字distinct
    我们经常使用聚集函数count计算一个关系中元组的数量。在SQL中该函数的写法是count(*)。因此,要找出course关系中的元组数,可写成:

    select count(*)
    from course;
    

    SQL不允许在用count(*)时使用distinct。在用max和min时使用distinct是合法的,尽管结果并没有差别。我们可以使用关键字all替代distinct来表明要保留重复项,但既然all是缺省的,就没必要这么做了。


    分组聚集

    有时候我们不仅希望将聚集函数作用在单个元组集上,而且希望将其作用在一组元组集上;在SQL中可使用group by子句实现这个愿望。group by子句中给出的一个或多个属性是用来构造分组的。在分组(group by)子句中的所有属性上取值相同的元组将被分在一个组内。
    分组是计算查询结果的第一步。在每个分组上都要进行指定的聚集计算。
    当SQL查询使用分组时,一个很重要的事情是确保出现在select语句中但没有被聚集的属性只能出现在group by子句中的那些属性。换句话说,任何没有出现在group by子句中的属性如果出现在select子句中,它只能作为聚集函数的参数,否则这样的查询就是错误的
    例如,下述查询是错误的,因为ID没有出现在group by子句中,但它出现在了select子句中,而且没有被聚集:

    /*错误查询*/
    select dept_name,ID,avg(salary)
    from instructor
    group by dept_name;
    

    在上述查询中,一个特定分组(通过dept_name定义)中的每位教师都可以有一个不同的ID,既然每个分组只输出一个元组,那就无法确定选哪个ID值作为唯一输出。其结果是,SQL不允许这样的情况出现。
    上述查询还展示了在SQL中用“/ /”包含文本的方式来编写注释,同样的注释也可以写为“–错误查询”。


    having子句

    有时候,对分组限定条件比对元组限定条件更有用。例如,我们也许只对教师平均工资超过4200美元的那些系感兴趣。该条件并不针对单个元组,而是针对group by子句构成的每个分组。为表达这样的查询,我们使用SQL的having子句。SQL在形成分组后才应用having子句中的谓词,因此在having子句中可以使用聚集函数。我们用SQL表达该查询如下:

    select dept_name,avg(salary) as avg_salary
    from instructor
    group by dept_name
    having avg(salary)>42000;
    

    与select子句的情况类似,任何出现在having子句中,但没有被聚集的属性必须出现在group by子句中,否则查询就是错误的
    包含聚集group byhaving子句的查询的含义可通过下述运算序列来定义:

    • 1.与不带聚集的查询情况类似,首先根据from子句来计算出一个关系。
    • 2.如果出现了where子句,where子句中的谓词将应用到from子句的结果关系上。
    • 3.如果出现了group by子句,满足where谓词的元组通过group by子句被放入分组中。如果没有group by子句,满足where谓词的整个元组集被当成一个分组。
    • 4.如果出现了having子句,它将应用到每个分组上;不满足having子句谓词的分组将被去掉。
    • 5.select子句利用剩下的分组产生查询结果中的元组,即在每个分组上应用聚集函数来得到单个结果元组。

    对空值和布尔值的聚集

    空值的存在给聚集运算的处理带来了麻烦。例如,假设instructor关系中有些元组在salary上取空值。考虑以下计算所有教师工资总额的查询:

    select sum(salary)
    from instructor
    

    由于我们假设某些元组在salary上取空值,上述查询待求和的值中就包含了空值。SQL标准并不认为总和本身为null,而是认为sum运算符应忽略其输入中的null值
    总而言之,聚集函数根据以下原则处理空值:

    • 除了count(*)之外的所有聚集函数都忽略其输入集合中的空值
    • 由于空值被忽略,聚集函数的输入值集合有可能为空集
    • 规定空集的count运算为0,并且当作用在空集上时,其他所有的聚集运算返回一个空值
    • 在一些更复杂的SQL结构中空值的影响会更难以琢磨。
      在SQL:1999中引入了布尔(boolean)数据类型,它可以取truefalseunknown三种值。聚集函数someevery应用于布尔值的集合,并分别计算这些值的析取(or)合取(and)
    更多相关内容
  • 聚集函数

    千次阅读 2019-08-06 17:49:13
    1、何为聚集函数聚集函数(aggregate function)运行在行组上,计算和返回单个值的函数。 SQL中常见的聚集函数: 2、AVG()函数 该函数通过对表中行数计数并计算特定列值之和,求得该列的平均值。既可用来...

    1、何为聚集函数?

    聚集函数(aggregate function)运行在行组上,计算和返回单个值的函数。

    SQL中常见的聚集函数:

    2、AVG()函数

    该函数通过对表中行数计数并计算特定列值之和,求得该列的平均值。既可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。

    AVG()函数只用于单个列,并且忽略列值为NULL的行。

    3、count()函数

    COUNT()函数进行计数。可以利用COUNT()确定表中行的数目或者符合特定条件的行的数目。

    COUNT()函数的两种使用方式:

      (1)使用COUNT(*)对表中行的数目进行计数,不管表列中包含的是空值(NULL)还是非空值。

      (2)使用COUNT(column)对特定列中具有值的行进行计数,忽略NULL值。

    4、MAX()函数

    MAX()返回指定列中的最大值。MAX()要求指定列名。

    对于非数值数据使用MAX()  :虽然MAX()一般用来找出最大的数值或日期值,但MySQL允许将它用来返回任意列中的最大值,包括返回文本列中的最大值。在用于文本数据时,如果数据按相应的列排序,则MAX()返回最后一行。

    MAX()忽略列值为NULL的行。

    5、MIN()函数

    MIN()的功能正好与MAX()功能相反。

    在用于文本数据时,如果数据按相应的列排序,则MIN()返回最前面的行。

    6、SUM()函数

    (1)求出单列

    (2)用于合计计算值

    所有的聚集函数都可以在多个列上进行计算。

    SUM()函数忽略列值为NULL的行。

     

     

     

    展开全文
  • SQL复习之聚集函数

    2019-05-26 01:06:27
    NULL 博文链接:https://zhangcong170.iteye.com/blog/492701
  • MySQL聚集函数

    2022-05-07 16:29:37
    聚集函数是以值是一个集合(集或者多重集)为输入、返回单个值得函数。SQL提供了五个固有聚集函数。平均值:avg最小值:min最大值:max总和:sum计数:count 2.基本聚集 以上五个固有聚集函数都是属于基本聚集 ...

    1、定义

    聚集函数是以值是一个集合(集或者多重集)为输入、返回单个值得函数。SQL提供了五个固有聚集函数。
    平均值:avg
    最小值:min
    最大值:max
    总和:sum
    计数:count

    2.基本聚集

    以上五个固有聚集函数都是属于基本聚集

    3、分组聚集

    如果希望将聚集函数作用在单个元组集上,也希望作用到一组元组集上,此时可以利用group by子句来实现。

    group by 子句作用:对给出的一个或多个属性来构造分组,将属性上取值相同的元组分到同一组中。

    4、having子句

    有时候限定分组条件比对元组限定条件更有用。比如我们只对工资超过15000某一个系感兴趣。该条件并不针对某个元组,而是针对group by子句构成的分组。即是说,having子句是在分组之后才生效的,可以使用聚集函数。例如:

     查询系平均工资再15000以上的。

    包含聚集、group by 或者having子句的查询的含义可通过下述操作序列定义:

    1、根据from子句计算出一个关系

    2、如果出现where子句,where子句的谓词将应用到from子句的结果上

    3、如果出现group by子句,满足where子句的元组通过group by子句形成分组。如果没有
    group by子句,满足where谓词的整个元组集被当做一个分组

    4、如果出现having子句,他将应用到每个分组上;不满足having子句谓词的分组将被抛弃。

    5、select子句利用剩下的分组产生出查询结果中的元组,即每个分组上应用聚集函数来得到单个关系元组

    展开全文
  • SQL聚集函数

    2021-05-28 15:26:42
    聚集函数都有哪些

    SQL聚集函数

    聚集函数是对一组数据进行汇总的函数,输入的是一组数据的集合,输出的是单个值。通常我们可以利用聚集函数汇总表的数据,如果稍微复杂一些,我们还需要先对数据做筛选,然后再进行聚集,比如先按照某个条件进行分组,对分组条件进行筛选,然后得到筛选后的分组的汇总信息。

    聚集函数都有哪些

    SQL 中的聚集函数一共包括 5 个,可以帮我们求某列的最大值、最小值和平均值等,它们分别是:
    COUNT()  总行数
    MAX() 最大值
    MIN() 最小值
    SUM() 求和
    AVG() 平均值

    使用示例:
    查询最大生命值大于 6000 的英雄数量
    SELECT COUNT(*) FROM heros WHERE hp_max > 6000;

    COUNT(*) 只是统计数据行数,不管某个字段是否为 NULL。

    查询最大生命值大于 6000,且有次要定位的英雄数量
    SELECT COUNT(role_assist) FROM heros WHERE hp_max > 6000;

    查询射手(主要定位或者次要定位是射手)的最大生命值的最大值是多少
    SELECT MAX(hp_max) FROM heros WHERE role_main ='射手' or role_assist = '射手';

    一条SELECT语句中可以使用了多项聚集函数查询

    AVG、MAX、MIN 等聚集函数会自动忽略值为 NULL 的数据行,MAX 和 MIN 函数也可以用于字符串类型数据的统计。

    如果是英文字母,则按照 A—Z 的顺序排列,越往后,数值越大。如果是汉字则按照全拼拼音进行排列。

    需要注意的是,针对中文字符使用聚集函数需要使用CONVER(name USING gbk)转化为gbk类型。

    也可以对数据行中不同的取值进行聚集,先用 DISTINCT 函数取不同的数据,然后再使用聚集函数,查询不同的生命最大值的英雄数量是多少:

    SELECT COUNT(DISTINCT hp_max) FROM heros


    对数据进行分组,并进行聚集统计

    分组后只可以查询GROUP BY的列和聚集函数

    做统计的时候,可能需要先对数据按照不同的数值进行分组,然后对这些分好的组进行聚集统计。

    比如我们想按照英雄的主要定位进行分组,并统计每组的英雄数量:
    SELECT COUNT(*), role_main FROM heros GROUP BY role_main;

    如何使用 HAVING 过滤分组,HAVING与WHERE的区别

    查询按照英雄的主要定位、次要定位进行分组,并且筛选分组中英雄数量大于 5 的组,最后按照分组中的英雄数量从高到低进行排序。
    SELECT COUNT(*) as num, role_main, role_assist FROM heros GROUP BY role_main, role_assist HAVING num > 5 ORDER BY num DESC;


    HAVING 的作用和 WHERE 一样,都是起到过滤的作用,只不过 WHERE 是用于数据行,而HAVING 则作用于分组。(where执行顺序先于group by)

    对于分组的筛选,要用HAVING,HAVING 支持所有 WHERE 的操作,因此所有需要 WHERE 子句实现的功能,你都可以使用 HAVING 对分组进行筛选。

    eg:
    SELECT COUNT(*) as num, role_main, role_assist FROM heros WHERE hp_max > 6000 GROUP BY role_main, role_assist HAVING num > 5 ORDER BY num DESC
    先增加了一个过滤条件,即筛选最大生命值大于 6000 的英雄。这里我们就需要先使用 WHERE 子句对最大生命值大于 6000 的英雄进行条件过滤,然后再使用 GROUP BY 进行分组,使用 HAVING 进行分组的条件判断,然后使用 ORDER BY 进行排序。
     

    展开全文
  • 数据库聚集函数

    千次阅读 2020-09-09 10:04:56
    聚集函数 为了进一步方便用户,增加检索功能,数据库提供了许多聚集函数,主要有 COUNT(*) 统计元组个数 COUNT ([ALL/DISTINCT ] <列名>) 统计一列中值的个数 SUM ([ALL/DISTINCT ] <列名>) ...
  • 聚集函数有哪些 函 数 说 明 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和 avg()函数 语句:SELECT AVG(prod_price) ...
  • 【MySQL】数据处理函数 与 聚集函数

    万次阅读 2021-07-16 19:02:56
    在文章的开头先记录一下“创建计算字段”的相关内容。 1.客户机与服务器的格式 ...【MySQL的不同之处】 多数DBMS使用+或||来实现拼接,MySQL则使用Concat()函数来实现。当把SQL语句转换成MySQL语句时一定要把这个..
  • 聚集函数 avg count max min sum 用于处理字符串的函数 合并字符串函数:concat(str1,str2,str3…) 比较字符串大小函数:strcmp(str1,str2) 获取字符串字节数函数:length(str) 获取字符串字符数函数:...
  • MySQL之聚集函数

    2020-12-29 12:42:11
    当我们只需要对表中数据进行汇总而不需要将它们实际检索出来的时候,我们可以使用MySQL提供的聚集函数聚集函数:运行在行组上,计算和返回单个值的函数。 AVG() :返回某列的平均值 COUNT() : 返回某列的行数 ...
  • 数据库原理——聚集函数

    千次阅读 2020-12-11 23:39:31
    聚集函数 SQL语言提供了五个作用在简单列值几何上的内置聚集函数,分别是COUNT,SUM,AVG,MAX,MIN 5个聚集函数的介绍如下: 聚集函数名 参数类型 结果类型 描述 Count 任意集合 一个数值 计算几何元素个数...
  • 文章目录1、聚集函数1.1 AVG()函数1.2 count()函数1.3 max()函数1.4 min()函数1.5 sum()函数2. 聚集不同值3. 组合聚集函数 1、聚集函数 我们经常需要汇总数据而不用把它们实际检索出来,为方便这种类型的检索,MySQL...
  • 一、什么是聚集函数 聚集函数的使用规则 二、group by和having的使用 1.group by的使用 2.having的使用 总结 前言 很多人对分组函数只知其一不知其二,用group by写的代码有的时候也不知道为什么会报错,那...
  • SQL 中的聚集函数

    2020-07-06 21:08:09
    SQL 中的聚集函数? SQL 函数包含了算术函数,字符串函数,日期函数,转换函数。还有一函数,叫做聚集函数。SQL 聚集函数是对一组数据进行汇总的函数,输入是一组数据的集合,输出是单个值。 有哪些聚集函数 SQL 中...
  • Delphi 结合SQLServer使用聚集函数MAX查询数据最多项内容,具体来说,本例是利用聚集函数MAX求7月份工作完成最多的员工,仍是一个数据库查询的范畴,这里使用了聚集函数,测试数据库在源代码的database目录下,本例...
  • 1、当聚集函数和非聚集函数一起出现时,要将非聚集函数进行group by 例如 : select name,count(*) from items group by name; 2、当只做聚集函数查询时候,就不需要进行分组了。 例如 : select sum(price) from ...
  • Delphi聚集函数求某月份完成工作量最多的员工,在VB与数据库的结合中,也经常有聚集函数的应用,本实例通过聚集函数MAX求7月份中,工作完成最多的员工,这在一些员工绩效考核软件中是相当实用的功能,通过数据库聚集...
  • 3、聚集函数count()的用法 count 也就是数量; 例如,查询表中选修CS课程的人数: 查询表中所有课程的选修人数: group by 表示 以······分组, 查询表中被选人数少于3的课程及人数: having 后跟附加条件...
  • 1.什么是聚集函数,有哪些聚集函数 聚集函数:对一组数据进行汇总的函数,输入的是一组数据,输出的是单个值 聚集函数有: COUNT MAX MIN SUM AVG COUNT COUNT(*)只统计数据行数,不管某个字段是否为NULL;而...
  • SQL聚集函数扩展.pdf

    2021-09-19 13:09:14
    SQL聚集函数扩展.pdf
  • PostgreSQL 聚集函数

    2021-08-25 23:40:06
    pgSQL 中文文档 聚集函数 1.聚集函数也叫聚合函数 聚合操作之高效这里就不多谈了。 其特点在 窗口函数的文章中 做了些比较,所以…也不多谈了。 结合文档来说,聚集函数有一些巧思的,剩下的基本都是些较为专业的...
  • 不允许使用聚集函数,统计每门课程的选课人数和平均分,按如下格式输出
  • 数据库关系代数的聚集函数

    千次阅读 多人点赞 2019-01-08 09:16:40
    聚集运算(aggregationoperation)G通常的形式如下:聚集运算(aggregation operation)\mathcal{G}通常的形式如下:聚集运算(aggregationoperation)G通常的形式如下: G1,G2,...,GnGF1(A1),F2(A2),...,Fm(Am)(E)...
  • 摘要:VB源码,数据库应用,聚集函数 利用聚集函数AVG求某班学生的平均年龄,VisualBasic6.0程序源码,求出本班学生的平均年龄,数据来自于Access数据库,数据读出后利用聚集函数AVG求平均年龄。
  • SQL中的5种聚集函数

    千次阅读 2019-10-07 07:55:15
     之后,自己又看了一些书,总结的sql聚集函数注意的地方,   一、先给大家分享写 sql 的顺序:  表->where(去除符合条件的行数据,此时烈没有变化)->符合条件的中间结果表-> 分组统计运算或者投影运算:max...
  • 聚集函数代码 第二次作业代码 plot_nw.m是生成最近邻耦合网络的MATLAB代码 plot_zjl.m是生成NW网络的MATLAB代码 cal.m是计算距离矩阵、网络直径、平均距离、集聚系数、度分布 的函数代码 使用方法 先运行某个生成...
  • SQL中where语句能用聚合函数...为什么聚集函数不能出现在where子句中count()是一个聚集函数(也称为聚合函数)是为了选定行的数目,可以包含空值。group by 是分组, 可以按照一个多多个字段分组。 使用时应注意:sele...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 105,904
精华内容 42,361
关键字:

聚集函数

友情链接: GA.rar