精华内容
下载资源
问答
  • 聚合函数

    千次阅读 2017-02-22 12:54:14
    聚合函数
            聚合函数,又叫做分组函数,多行处理函数。
    count	取得记录数
    sum	求和
    avg	取平均
    max	取最大的数
    min	取最小的数

    一count

    查询所有的员工数

    mysql> select count(*) from emp;
    +----------+
    | count(*) |
    +----------+
    |       14 |
    +----------+
    取得津贴不为NULL的员工

    mysql> select count(comm) from emp;
    +-------------+
    | count(comm) |
    +-------------+
    |           4 |
    +-------------+
    注:count(字段名)会自动去掉NULL,不需要手动添加过滤条件。

    二sum

    Sum可以取得某一个列的和,null会被忽略。

    取得津贴的合计

    mysql> select sum(comm) from emp;
    +-----------+
    | sum(comm) |
    +-----------+
    |   2200.00 |
    +-----------+

    三avg

    取得某一列的平均值

    取得平均薪水

    mysql> select avg(sal) from emp;
    +-------------+
    | avg(sal)    |
    +-------------+
    | 2073.214286 |
    +-------------+

    四max

    取得某个一列的最大值

    取得最高薪水

    mysql> select max(sal) from emp;
    +----------+
    | max(sal) |
    +----------+
    |  5000.00 |
    +----------+

    五min

    取得某个一列的最小值

    取得最低薪水

    mysql> select min(sal) from emp;
    +----------+
    | min(sal) |
    +----------+
    |   800.00 |
    +----------+

    六组合聚合函数

    可以将这些聚合函数都放到select中一起使用

    mysql> select count(*), sum(sal), avg(sal), max(sal), min(sal) from emp;
    +----------+----------+-------------+----------+----------+
    | count(*) | sum(sal) | avg(sal)    | max(sal) | min(sal) |
    +----------+----------+-------------+----------+----------+
    |       14 | 29025.00 | 2073.214286 |  5000.00 |   800.00 |
    +----------+----------+-------------+----------+----------+
    展开全文
  • 聚合函数是sql当中一个最基本的函数,sql距,那么就一定要接触到聚合函数的相关内容,那么聚合函数究竟是如何使用的呢?今天我们就一起来看一看sql语句当中的聚合函数使用方法吧。聚合函数——SQL语句中聚合函数的...

    聚合函数是sql当中一个最基本的函数,sql距,那么就一定要接触到聚合函数的相关内容,那么聚合函数究竟是如何使用的呢?今天我们就一起来看一看sql语句当中的聚合函数使用方法吧。

    聚合函数——SQL语句中聚合函数的使用

    写上一个创建表的SQL语句.当然我下面的写法只支持SQLSERVER2008数据库以上的写法.

    CREATETABLE学生表

    学生IDINTIDENTITY(1,1)NOTNULL,

    学号INTNULL,

    期中分数INTNULL,

    期末分数INTNULL

    INSERTINTO学生表(学号,期中分数,期末分数)

    VALUES,85,80),

    (2,NULL,75),

    (3,NULL,85),

    (4,NULL),,80);

    SELECT*FROM学生表;

    一条查询语句,我们看到了刚才插入的全部结果.

    我们来显示学生成绩中,期中考试分数最低的和期末考试分数最好的.

    SELECTMIN(期中分数)AS期中最低分数,MAX(期末分数)AS期末最高分数FROM学生表;

    我们来求一下期中考试分数的平均分数.

    我们数据库里面一共有5条数据.

    85,NULL,NULL,80,85

    我们的结果是83分.

    我们的聚合函数如果遇到NULL值的话,就会跳过去,不计算.

    所以我们的结果是(85+80+85)/3=83!

    查询学生表中有效的期末分数,得出的结果是3条.

    SELECTCOUNT(期中分数)FROM学生表;

    所以,大家一定要记得.聚合函数遇到空值会跳过去.

    ORACLE优化SQL语句

    一、执行顺序及优化细则

    1.表名顺序优化(1)基础表放下面,当两表进行关联时数据量少的表的表名放右边表或视图:

    (2)当出现多个表时,关联表被称之为交叉表,交叉表作为基础表

    2.WHERE执行顺序WHERE执行会从至下往上执行摆放WHERE子句时,把能过滤大量数据的条件放在最下边

    3.ISNULL和ISNOTNULL当要过滤列为空数据或不为空的数据时使用

    4.使用表别名当查询时出现多个表时,查询时加上别名,避免出现减少解析的时间字段歧义引起的语法错误。

    WHERE执行速度比HING快尽可能的使用WHERE代替HING

    6.*号引起的执行效率尽量减少使用SELECT*来进行查询,当你查询使用*,数据库会进行解析并将*转换为全部列。

    二、替代优化1、用>=替代>

    2、用UNION替换OR(适用于索引列)

    3、用IN代替OR

    4、UNIONALL与UNIONUNIONALL重复输出两个结果集合中相同记录如果两个并集中数据都不一样.那么使用UNIONALL与UNION是没有区别的,

    5、分离表和索引总是将你的表和索引建立在另外的表空间内决不要将这些对象存放到SYSTEM表空间里

    三、一些优化技巧

    1、计算表的记录数时  SELECTCOUNT(SI.STUDENT_ID)FROMSTUDENT_INFOSI(STUDENT_ID为索引)与SELECTCOUNT(*)FROMSTUDENT_INFOSI执行时.上面的语句明显会比下面没有用索引统计的语句要快

    2.使用函数提高SQL执行速度

    当出现复杂的查询SQL语名,可以考虑使用函数来提高速度查询学生信息并查询学生(李明)个人信息与的数学成绩排名如

    4、用EXISTS(NOTEXISTS)代替IN(NOTIN)

    在执行当中使用EXISTS或者NOTEXISTS可以高效的进行查询

    以上就是聚合函数如何使用的所有内容,这些都是一些基础的知识点,如果大家还想更加深入的了解聚合函数,那么可以关注我们

    推荐阅读

    展开全文
  • 窗口聚合函数与分组聚合函数的功能是相同的;唯一不同的是,分组聚合函数通过分组查询来进行,而窗口聚合函数通过OVER子句定义的窗口来进行。 --《T-SQL性能调优秘笈---基于SQL Server2012窗口函数》2.1.1窗口聚合...

    窗口聚合函数分组聚合函数的功能是相同的;唯一不同的是,分组聚合函数通过分组查询来进行,而窗口聚合函数通过OVER子句定义的窗口来进行。

    --《T-SQL性能调优秘笈---基于SQL Server2012窗口函数》2.1.1窗口聚合函数描述

    转载于:https://www.cnblogs.com/zjfblog/p/6832009.html

    展开全文
  • MySQL版本:5.7+一、MySQL 5.7中的聚合函数MySQL 5.7中的聚合函数如下:除非另有说明,否则组合函数会忽略NULL值。如果在不包含Group By子句的语句中使用组合函数,就等效于对所有行进行分组。(个人理解是,结果总是...

    MySQL版本:5.7+

    一、MySQL 5.7中的聚合函数

    MySQL 5.7中的聚合函数如下:

    5c95f5e77c410bc5e3a1f1e5abbf87f7.png

    除非另有说明,否则组合函数会忽略NULL值。

    如果在不包含Group By子句的语句中使用组合函数,就等效于对所有行进行分组。(个人理解是,结果总是只有一行。)关于这点的更多信息,后面的小节“MySQL处理Group By的方式”会讲到。

    聚合函数中,方差和标准差函数会对数值参数返回DOUBLE值。SUM()和AVG()对精确值参数(integer或DECIMAL)返回DECIMAL值,而对近似值参数(FLOAT或DOUBLE)返回DOUBLE值。

    时间类型的参数对SUM()和AVG()无效。它们会把时间类型的值转换成数字,丢弃第一个非数字字符后的所有信息)。如果要解决这个问题,先要将时间类型的值转换为合适的数值单元,在执行聚合操作后,再转换回时间值。如下所示:

    SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(time_col))) FROMtbl_name;SELECT FROM_DAYS(SUM(TO_DAYS(date_col))) FROM tbl_name;

    诸如SUM()和AVG()这样需要数值参数的函数,会对非数值参数做必要的强制转换。而对于SET或ENUM值,强制转换操作会导致使用基础数值。

    BIT_AND(),BIT_OR()和BIT_XOR()聚合函数执行位操作。它们需要BIGINT(64位整数)参数并返回BIGINT值。其他类型的参数将转换为BIGINT并可能发生截断。而在MySQL 8.0中,允许位操作采用二进制字符串类型参数(BINARY,VARBINARY和BLOB类型),详见其手册的12.12节。

    二、聚合函数详解

    2.1 AVG()

    AVG([DISTINCT] expr)

    函数返回expr的平均值。

    DISTINCT则用于返回expr的不同值的平均值。

    如果没有匹配的行,AVG()返回null。

    2.2 COUNT()

    COUNT(expr)

    返回SELECT语句检索的行中expr的非NULL值的计数。

    返回结果是BIGINT值。

    如果没有匹配的行,count()返回0.

    count(*)有些不同,它返回取回的行的行数的计数,无论它们是否包含NULL值。

    对于诸如InnoDB之类的事务存储引擎,存储精确的行数是有问题的。多个事务可能同时发生,每个事务都可能影响计数。

    所以InnoDB不在内部保留表的行数,因为并发事务可能同时“看到”不同数量的行。因此,SELECT COUNT(*)语句只计算当前事务可见的行。

    在MySQL 5.7.18之前,InnoDB通过扫描聚集索引(clustered index)来处理SELECT COUNT(*)语句。从MySQL 5.7.18开始,InnoDB通过遍历最小的可用二级索引来处理SELECT COUNT(*)语句,除非索引或优化器提示指示优化器使用不同的索引。如果不存在辅助索引,则扫描聚集索引。

    如果索引记录不完全在缓冲池中,那么处理select count(*)语句需要一些时间。为了更快地计算,可以创建一个计数表,让应用程序根据插入和删除操作更新它。但是,在数千个并发事务正在启动对同一计数器表的更新的情况下,此方法可能无法很好地扩展。因此,如果大概的行数可以满足需求,请使用SHOW TABLE STATUS。

    对于MyISAM表,如果SELECT从一个表没有检索到其他列,并且没有WHERE子句,而只返回COUNT(*)的结果,则COUNT(*)会被优化,可以快速返回。例如:

    SELECT COUNT(*) FROM student;

    此优化仅适用于MyISAM表,因为为此存储引擎存储了精确的行数,并且可以非常快速地访问。COUNT(1)则仅在第一列定义为NULL时,受到相同额度优化。

    2.3 COUNT(DISTINCT ...)

    COUNT(DISTINCT expr,[expr...])

    函数返回返回不相同且非NULL的expr值的行数。

    如果没有匹配的行,则COUNT(DISTINCT)返回0。

    在MySQL中,您可以通过提供表达式列表,来获取不包含NULL的不同表达式组合的数量。而在标准表达式中,必须在COUNT(DISTINCT ...)中对所有表达式进行连接。

    2.4 GROUP_CONCAT()

    GROUP_CONCAT([DISTINCT] expr [,expr ...]

    [ORDER BY {unsigned_integer | col_name | expr}

    [ASC | DESC] [,col_name ...]][SEPARATOR str_val])

    这个函数把来自同一个组的某一列(或者多列)的数据连接起来成为一个字符串。

    如果没有非NULL值,返回NULL。

    示例如下:

    /*001*/

    /*成绩表中只对学生ID分组*/

    select SId, group_concat(cId),group_concat(score) from sc group by SId;

    结果如下,并没有排序

    9bed0fe5ada419692c367924eae88e91.png

    /*002*/

    /*排序后连接,改变分隔符*/

    select SId, group_concat(cId),group_concat(score order by score desc separator ' ')from sc group by SId;

    结果如下:

    62af2c06c32353f05fb69f8ceca05af9.png

    至于对多个expr的连接,试了试,会把两个字段无缝连在一起。

    select SId, group_concat(cId,score),group_concat(score) from sc group by SId;

    3629633cbfacd5515e38576cff3bad69.png

    Group_Concat()的结果将截断为group_concat_max_len系统变量所设置的最大长度,该变量的默认值为1024。

    而返回值是非二进制或二进制字符串,具体取决于参数是非二进制还是二进制字符串。

    返回的结果类型为TEXT或BLOB,除非group_concat_max_len小于或等于512,这种情况下,结果类型为VARCHAR或VARBINARY。

    2.5 JSON_ARRAYAGG(col or expr)

    将结果集聚合为单个JSON数组,其元素由参数列的值组成。此数组中元素的顺序未定义。该函数作用于计算为单个值的列或表达式。

    异常返回NULL。

    示例如下:

    83667d9f33c3b88ffbd331e20639e0a0.png

    2.6 JSON_OBJECTAGG(key,value)

    两个列名或表达式作为参数,第一个用作键,第二个用作值,并返回包含键值对的JSON对象。

    如果结果不包含任何行,或者出现错误,则返回NULL。如果任何键名称为NULL或参数数量不等于2,则会发生错误。

    e4989f66690db03b0521ca69d1640b47.png

    如何处理重复key,参考原文此处。

    2.7 其余函数

    位函数进行位操作。

    标准差和方差函数,为了兼容有不同的函数名。

    详见原文档。

    展开全文
  • 摘要:PostgreSQL支持较多的聚合函数, 以PostgreSQL 9.4为例, 支持例如一般性的聚合, 统计学科的聚合, 排序集聚合, 假象集聚合等. 本文将对一般性聚合函数举例说明其功能和用法. 聚合函数有哪些,见 ...
  • 在上一篇博客当中,我们对Window的整体分类即使用进行了介绍,今天我们将从另外一个角度对Window...常见的增量聚合函数有:reduce(reduceFunction)、aggregate(aggregateFunction)、sum()、min()、max()。 增量聚合.
  • jQuery聚合函数实例

    2020-10-24 05:18:59
    主要介绍了jQuery聚合函数,实例分析了jQuery中聚合函数的使用方法,需要的朋友可以参考下
  • 聚合函数的概念 ==聚合函数对一组值计算后返回单个值。==除了count(统计项数)函数以外,其他的聚合函数在计算式都会忽略空值(null)。所有的聚合函数均为确定性函数。即任何时候使用一组相同的输入值调用聚合函数执行...
  • sql聚合函数

    2020-10-14 16:51:02
    什么是聚合函数(aggregate function)? 聚合函数对一组值执行计算并返回单一的值。 聚合函数有什么特点? 除了 COUNT 以外,聚合函数忽略空值。 聚合函数经常与 SELECT 语句的 GROUP BY 子句一同使用,且...
  • 目的:Mysql 聚合函数嵌套使用聚合函数不可以直接嵌套使用,比如: max(count(*))但是可以嵌套子查询使用 eg:注:后面那个 as 必须要写select max(total) from ( select count(*) as total from blog group by ...
  • 1.count聚合函数,用来统计函数(1)统计一个班共有多少个学生select count( * ) from grade;(2)统计math成绩大于70的学生有多少个select count( * ) from grade where math>70;(3)统计总分大于230的人数select ...
  • 什么是聚合函数聚合函数聚合函数就是对一组值进行计算后返回单个值(即分组)。聚合函数在计算时都会忽略空值(null)。 所有的聚合函数均为确定性函数。即任何时候使用一组相同的输入值调用聚合函数执行后的...
  • ClickHouse 聚合函数

    千次阅读 2020-03-18 09:24:54
    ClickHouse 聚合函数 本贴最后更新于783天前,其中的信息可能已经水流花落 背景 ClickHouse 中内置许多标准 SQL 外的函数。 这里记录一下其中聚合函数的学习笔记。 聚合函数 常用函数 count 返回记录条数...
  • Clickhouse 聚合函数

    千次阅读 2020-08-31 15:37:10
    clickhouse的聚合函数包含了标准SQL的聚合函数,此外还有一些自有的聚合函数: 函数功能 函数名 标准OR自有 函数别名 计数 count 求和 sum 求平均 avg 最大值 ...
  • 这次给大家带来SQL的聚合函数与排序,使用SQL聚合函数与排序的注意事项有哪些,下面就是实战案例,一起来看一下。语法:Select count(*)|count(列名) from table_name [where where_defination];Select count(id) ...
  • 1.1. 单行函数,vs 那就是聚合函数 1 1.2. 聚合分类 哈希聚合标量聚合流聚合 1 1.3. 常见聚合函数 mysql oracle等 1 ref 2 单行函数,vs 那就是聚合函数 聚合分类 哈希聚合标量聚合流聚合 常见...
  • oracle日期函数字符函数聚合函数
  • Hive聚合函数

    2020-09-22 17:14:57
    Hive聚合函数GROUP BYHAVING基础聚合高级聚合 GROUP BY group by用于分组 Hive基本内置聚合函数与group by一起使用 如果没有指定group by子句,则默认聚合整个表 除聚合函数外,所选的其他列也必须包含在group by中...
  • Oracle自定义聚合函数,分析函数.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,207
精华内容 9,282
关键字:

聚合函数