精华内容
下载资源
问答
  • 上篇文章给大家介绍了Mongodb中MapReduce实现数据聚合方法详解,我们提到过...下面我们分别来讲述一下这三个基本聚合函数。 (1)count 作用:简单统计集合中符合某种条件的文档数量。 使用方式:db.collection.count
  • 但是在大多数日常使用过程中,我们并不需要使用MapReduce来进行操作,不然有点杀鸡用牛刀的感觉,在这边文章中,我们就简单说说用自带的聚合函数进行数据聚合操作的实现。 Mongodb中自带的基本聚合函数有三种:...

        在之前的文章<Mongodb中数据聚合之MapReduce>中,我们提到过Mongodb中进行数据聚合操作的一种方式——MapReduce,但是在大多数日常使用过程中,我们并不需要使用MapReduce来进行操作,不然有点杀鸡用牛刀的感觉偷笑,在这边文章中,我们就简单说说用自带的聚合函数进行数据聚合操作的实现。


    Mongodb中自带的基本聚合函数有三种:count、distinct和group。下面我们分别来讲述一下这三个基本聚合函数。


    (1)count

    作用:简单统计集合中符合某种条件的文档数量。

    使用方式:db.collection.count(<query>)或者db.collection.find(<query>).count()

    参数说明:其中<query>是用于查询的目标条件。如果出了想限定查出来的最大文档数,或者想统计后跳过指定条数的文档,则还需要借助于limit,skip。

    举例:

    db.collection.find(<query>).limit();

    db.collection.find(<query>).skip();


    (2)distinct

    作用:用于对集合中的文档针进行去重处理

    使用方式:db,collection.distinct(field,query)

    参数说明:field是去重字段,可以是单个的字段名,也可以是嵌套的字段名;query是查询条件,可以为空;

    举例:

    db.collection.distinct("user",{“age":{$gt:28}});//用于查询年龄age大于28岁的不同用户名

    除了上面的用法外,还可以使用下面的另外一种方法:

    db.runCommand({"distinct":"collectionname","key":"distinctfied","query":<query>})

    collectionname:去重统计的集合名,distinctfield:去重字段,,<query>是可选的限制条件;

    举例:


    这两种方式的区别:第一种方法是对第二种方法的封装,第一种只返回去重统计后的字段值集合,但第二种方式既返回字段值集合也返回统计时的细节信息。


    (3)group

    作用:用于提供比count、distinct更丰富的统计需求,可以使用js函数控制统计逻辑

    使用方式:db.collection.group(key,reduce,initial[,keyf][,cond][,finalize])

    备注说明:在2.2版本之前,group操作最多只能返回10000条分组记录,但是从2.2版本之后到2.4版本,mongodb做了优化,能够支持返回20000条分组记录返回,如果分组记录的条数大于20000条,那么可能你就需要其他方式进行统计了,比如聚合管道或者MapReduce;


    上面对Mongodb中自带的三种三种聚合函数进行了简单的描述,并对需要注意的地方进行了简单的说明,如果需要深入使用,可以进入Mongodb官网查看相关细节信息,谢谢。



    展开全文
  • 聚合函数

    2020-12-31 17:35:21
    下面聚合函数列表: SUM 返回表达式的合计值; MIN 返回表达式的最小值; MAX 返回表达式的最大值; AVG 返回表在式的平均值; COUNT 返回数据块的记录数(行数)。 用SUM函数来说明聚合函数的使用方式(除Count)...

    大多数分组报表需要一些统计信息(如:分组合计,记录个数等等)。FastReport提供了这些聚合函数,使用这些函数,可以对数据块中的数据进行统计。下面是聚合函数列表:
    SUM 返回表达式的合计值;
    MIN 返回表达式的最小值;
    MAX 返回表达式的最大值;
    AVG 返回表在式的平均值;
    COUNT 返回数据块的记录数(行数)。
    用SUM函数来说明聚合函数的使用方式(除Count):
    SUM(expression, band, flags)
    SUM(expression, band)
    SUM(expression)
    聚合函数的参数如下指定:
    Expression—表达式,用于计算的值;
    Band—数据栏的名字,用于计算的值的来源;
    Flags—标志,只能取以下值或他们的合计值
    1—计算时包含不可以栏的值;
    2—累计统计或统计总值(数据分组后统计值不重新统计,即一直往下累计)。
    其中,表达式参数是必须的,其它为可选参数。不过还是推荐使用数据栏参数,这会减少一些错误的发生。
    “Count”函数的语法如下:
    COUNT(band, flags)
    COUNT(band)
    参数意义如上面的的描述相似。
    所有聚合函数的使用都要遵守一个规则:每个聚合函数仅能应用于数据栏且只能被放置到尾栏内(尾栏指的是 尾,页尾,分组脚,栏尾及报表合计)。
    聚合函数是如何工作的呢?下面将用我们的分组报表示例来加以说明。添加一些

    展开全文
  • Django 数据聚合函数:annotate

    千次阅读 2018-01-27 09:44:12
    annotate 方法在底层调用了数据库的数据聚合函数下面使用一个实际的数据库表来帮助我们理解 annotate 方法的工作原理。在 Post 模型中我们通过 ForeignKey 把 Post 和 Category 关联了起来,这时候它们的数据库表...

    统计各个分类下的文章数

    在我们的博客侧边栏有分类列表,显示博客已有的全部文章分类。现在想在分类名后显示该分类下有多少篇文章,该怎么做呢?最优雅的方式就是使用 Django 模型管理器的 annotate 方法。

    模型回顾

    回顾一下我们的模型代码,Django 博客有一个 Post 和 Category 模型,分别表示文章和分类:

    blog/models.py
    
    class Post(models.Model):
        title = models.CharField(max_length=70)
        body = models.TextField()
        category = models.ForeignKey('Category')
        # 其它属性...
    
        def __str__(self):
            return self.title
    
    class Category(models.Model):
        name = models.CharField(max_length=100)

    我们知道从数据库取数据都是使用模型管理器 objects 的方法实现的。比如获取全部分类是:Category.objects.all(),假设有一个名为 test 的分类,那么获取该分类的方法是:Category.objects.get(name='test') 。objects 除了 all、get 等方法外,还有很多操作数据库的方法,而其中有一个 annotate 方法,该方法正可以帮我们实现本文所关注的统计分类下的文章数量的功能。

    数据库数据聚合

    annotate 方法在底层调用了数据库的数据聚合函数,下面使用一个实际的数据库表来帮助我们理解 annotate 方法的工作原理。在 Post 模型中我们通过 ForeignKey 把 Post 和 Category 关联了起来,这时候它们的数据库表结构就像下面这样:
    Post表:

    idtitlecategory_id
    1post-11
    2post-21
    3post-32

    Category表:

    idname
    1name-1
    2name-2

    这里前 2 篇文章属于 category 1,第 3篇文章属于 category 2。

    当 Django 要查询某篇 post 对应的分类时,比如 post 1,首先查询到它分类的 id 为 1,然后 Django 再去 Category 表找到 id 为 1 的那一行,这一行就是 post 1 对应的分类。反过来,如果要查询 category 1 对应的全部文章呢?category 1 在 Category 表中对应的 id 是 1,Django 就在 Post 表中搜索哪些行的 category_id 为 1,发现前 2 行都是,把这些行取出来就是 category 1 下的全部文章了。同理,这里 annotate 做的事情就是把全部 Category 取出来,然后去 Post 查询每一个 Category 对应的文章,查询完成后只需算一下每个 category id 对应有多少行记录,这样就可以统计出每个 Category 下有多少篇文章了。把这个统计数字保存到每一条 Category 的记录就可以了(当然并非保存到数据库,在 Django ORM 中是保存到 Category 的实例的属性中,每个实例对应一条记录)。

    使用annotate

    blog/templatetags/blog_tags.py
    
    from django.db.models.aggregates import Count
    from blog.models import Category
    
    @register.simple_tag
    def get_categories():
        # 记得在顶部引入 count 函数
        # Count 计算分类下的文章数,其接受的参数为需要计数的模型的名称
        return Category.objects.annotate(num_posts=Count('post')).filter(num_posts__gt=0)

    这个 Category.objects.annotate 方法和 Category.objects.all 有点类似,它会返回数据库中全部 Category 的记录,但同时它还会做一些额外的事情,在这里我们希望它做的额外事情就是去统计返回的 Category 记录的集合中每条记录下的文章数。代码中的 Count 方法为我们做了这个事,它接收一个和 Categoty 相关联的模型参数名(这里是 Post,通过 ForeignKey 关联的),然后它便会统计 Category 记录的集合中每条记录下的与之关联的 Post 记录的行数,也就是文章数,最后把这个值保存到 num_posts 属性中。

    此外,我们还对结果集做了一个过滤,使用 filter 方法把 num_posts 的值小于 1 的分类过滤掉。因为 num_posts 的值小于 1 表示该分类下没有文章,没有文章的分类我们不希望它在页面中显示。关于 filter 函数以及查询表达式(双下划线)在之前已经讲过,具体请参考分类与归档。

    在模板中引用新增的属性

    现在在 Category 列表中每一项都新增了一个 num_posts 属性记录该 Category 下的文章数量,我们就可以在模板中引用这个属性来显示分类下的文章数量了。

    templates/base.html
    
    <ul>
      {% for category in category_list %}
      <li>
        <a href="{% url 'blog:category' category.pk %}">{{ category.name }}
          <span class="post-count">({{ category.num_posts }})</span>
        </a>
      </li>
      {% empty %}
      暂无分类!
      {% endfor %}
    </ul>

    也就是在模板中通过模板变量 {{ category.num_posts }} 显示 num_posts 的值。开启开发服务器,可以看到分类名后正确地显示了该分类下的文章数了,而没有文章分类则不会在分类列表中出现。

    将annotate用于其他关联关系

    此外,annotate 方法不局限于用于本文提到的统计分类下的文章数,你也可以举一反三,只要是两个 model 类通过 ForeignKey 或者 ManyToMany 关联起来,那么就可以使用 annotate 方法来统计数量。比如下面这样一个标签系统:

    class Post(models.Model):
        title = models.CharField(max_length=70)
        body = models.TextField()
        Tags = models.ManyToMany('Tag')
    
        def __str__(self):
            return self.title
    
    class Tag(models.Model):
        name = models.CharField(max_length=100)

    统计标签下的文章数:

    from django.db.models.aggregates import Count
    from blog.models import Tag
    
    # Count 计算分类下的文章数,其接受的参数为需要计数的模型的名称
    tag_list = Tag.objects.annotate(num_posts=Count('post'))

    关于 annotate 方法官方文档的说明在这里:annotate。同时也建议了解了解 objects 下的其它操作数据库的方法,以便在遇到相关问题时知道去哪里查阅。

    展开全文
  • postgresql 自定义聚合函数实现多行数据合并成一列

    前言

    常见的一种需求,如下图(1):
    这里写图片描述
    目前需要按右边的factor_code进行分组,将左边的behavior_code这一列通过指定分隔符连接起来,比如通过<br /> 来连接,理想的效果应当是如下图(2)这样:
    这里写图片描述
    下面就来讨论一下实现方式,假如在别的数据库中来实现,例如MySQL或Oracle,好像没有特别方便和直接的方式,同样的在早期的Postgres中也是一件麻烦的事情,下面先看一下Postgres早期版本的解决方案~

    postgres 8.x的解决方案

    没错,同标题一样,在postgres 8.x的版本中有几种解决办法,可以通过内置的数组函数array_to_string,也可以通过自定义function结合自定义聚合函数来实现,下面先看一下第一种。

    array_to_string

    通过嵌套子查询的方式来完成,缺点是写法是略微麻烦,而且SQL层次不清晰,效率也不高,下面看一下SQL:

    select array_to_string
    (array(select behavior_code from t_evaluation_behavior t2 where t1.factor_code = t2.factor_code), '<br />') as behavior_code,
    factor_code from t_evaluation_behavior t1 group by factor_code order by factor_code;

    运行效果如图(2)一致,接下来再看一下第二种解决方案,通过自定义function结合自定义聚合函数来实现。

    创建自定义聚合函数(CREATE AGGREGATE)

    这种方式使用简便,就是第一次写起来略微麻烦一点。思路和上一种一致,同样是间接的利用了array_to_string函数,只不过是在一个自定义的function中去做了。关于自定义聚合函数,我们可以在官方文档中的CREATE ARRGREAGTE 章节中看到,在postgres 8.x和9.x中基本是一致的,仅有略微差别,如下图(3)所示:
    这里写图片描述
    由于我本地的postgres是9.3,所以在此就着重演示一下9.3的CREATE AGGREGATE(关于实现多行数据合并成一列的最简便方式不是这种,稍后在后面说)。
    - name
    要创建的聚集函数名(可以有模式修饰的)。
    - base_type
    本聚集函数要处理的基本数据类型。 对于不检查输入类型的聚集来说,这个参数可以声明为”ANY”。 (比如 count(*))。
    - sfunc
    用于处理源数据列里的每一个输入数据的状态转换函数名称。 它通常是一个双参数的函数,第一个参数的类型是 state_data_type 而第二个参数的类型是 input_data_type. 另外,对于一个不检查输入数据的聚集,该函数只接受一个类型为 state_data_type 的参数。 不管是哪种情况,此函数必须返回一个类型为 state_data_type的值。 这个函数接受当前状态值和当前输入数据条目,而返回下个状态值。
    - state_data_type
    聚集的状态值的数据类型。
    - ffunc
    在转换完所有输入域/字段后调用的最终处理函数。它计算聚集的结果。 此函数必须接受一个类型为 state_data_type 的参数。 聚集的输出数据类型被定义为此函数的返回类型。 如果没有声明 ffunc 则使用聚集结果的状态值作为聚集的结果,而输出类型为 state_data_type
    - initial_condition
    状态值的初始设置(值)。它必须是一个数据类型 state_data_type 可以接受的文本常量值。 如果没有声明,状态值初始为 NULL。
    - sort_operator
    用于 MIN 或者 MAX 类型的聚集的相关的排序操作符。 这个只是一个操作符名(可以有模式修饰)。 这个操作符假设接受和聚集一样的输入数据类型。

    OK,看完了所有的参数介绍,我们现在实现自己的聚合函数。

    准备sfunc

    这是第一步,sfunc需要我们自定义一个function,根据官方文档的描述,sfunc是一个状态转换函数,下面看一下文档中的这一段话:

    PostgreSQL创建一个类型为stype的临时变量。它保存这个聚集的当前内部状态。对于每个输入数据条目,都调用状态转换函数计算内部状态值的新数值。 在处理完所有数据后,调用一次最终处理函数以计算聚集的返回值。如果没有最终处理函数, 则将最后的状态值当做返回值。

    OK,根据官方文档的描述需要两个参数,一个是internal-state,一个是next-data-values。下面是sfunc的代码:

    CREATE FUNCTION "public"."NewProc"(aa _text, s text)
      RETURNS "pg_catalog"."_text" AS $BODY$
    BEGIN
    RETURN array_append(aa, s);
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE COST 100
    ;
    
    ALTER FUNCTION "public"."NewProc"(aa _text, s text) OWNER TO "postgres";

    可以看到我们做的事情很简单,就是将聚合的数据放到一个数组里,当然也可以用一种更简便的写法来完成,即数组操作符 ||,它可以直接将元素put到数组里。

    准备ffunc

    完成了第一步之后,回归主题,我们要实现的是多行数据合并成一列,那么很简单,上面我们用过了array_to_string这个数组函数,这里我们同样利用这个思路,将我们准备好的数组通过指定的分隔符转换成字符串。下面是ffunc的代码:

    CREATE FUNCTION "public"."NewProc"(aa _text)
      RETURNS "pg_catalog"."text" AS $BODY$
    BEGIN
    RETURN array_to_string(aa, '<br />');
    END;
    $BODY$
      LANGUAGE 'plpgsql' VOLATILE COST 100
    ;
    
    ALTER FUNCTION "public"."NewProc"(aa _text) OWNER TO "postgres";

    很简单,通过br分隔符将参数数组转换成字符串并返回。

    CREATE AGGREGATE

    上面的两个自定义函数都准备好之后,我们就可以创建我们自定义的聚合函数了,参考上面图(3)的语法,写出创建语句:

    CREATE AGGREGATE ToOneRow(TEXT) (
        SFUNC = SFUNC_ToOneRow,
        STYPE = TEXT[],
          FINALFUNC = FFUNC_ToOneRow
    );

    这样我们就创建完成了,赶紧尝试运行一下是否可以使用:

    select ToOneRow(behavior_code) as behavior_code,factor_code
        from t_evaluation_behavior 
            group by factor_code order by factor_code;

    Congratulation!运行如上的SQL语句,依旧可以正确的得到和图(2)一模一样的结果。

    最佳实践(Best Practice)

    如果是在8.x的版本中仅仅只能通过上述的方式解决问题了,但自从postgres 9之后,又新增了一批内置的聚合函数,其中就包含我们上面实现的那种方式,所以9.x的版本也就不需要我们再去自己创建了!下面看一下官方文档中提供的9.3版本的内置聚合函数表:
    这里写图片描述

    注意一下我用红色标记出来的这个函数,是否有种豁然开朗的感觉呢?这里不得不再次赞叹一下postgres确实很强大!赶紧测试一下是否有效:

    select string_agg(behavior_code,'<br />') as behavior_code,factor_code
        from t_evaluation_behavior 
            group by factor_code order by factor_code;

    Perfect!和图(2)一模一样!第一个参数是需要聚合的列名,第二个参数是分隔符,这样就更加方便的完成了我们的需求~

    总结

    简单记录一下这种需求,以及postgres中自定义聚合函数的方法。如有错误的地方欢迎批评指正,The End。


    参考资料:http://www.postgresql.org/docs/9.3/interactive/functions-aggregate.html

    展开全文
  • 在上一篇博客当中,我们对Window的整体分类即使用进行了介绍,今天我们将从另外一个角度对Window...常见的增量聚合函数有:reduce(reduceFunction)、aggregate(aggregateFunction)、sum()、min()、max()。 增量聚合.
  • SQL Server汇总数据聚合函数与分组

    千次阅读 2015-12-25 23:31:27
    主要用于对数据集的的数据进行汇总统计等操作,基本是聚合函数。 聚合的基本理念:不是返回所有指定的行,而是返回一行计算得到的值(前面指定的行 ...在SQL查询的逻辑流程中,聚合函数是在From子句和Where子句之后执
  • MySQL 聚合函数

    千次阅读 2019-05-28 22:56:30
    经常需要汇总好的数据而不用把他们实际检索出来,使用聚合函数即可 AVG() 返回某列的平均值 COUNT() 返回某列的行数 MAX() 返回某列的最大值 MIN() 返回某列的最小值 SUM() 返回某列值之和 下面一一介绍这些函数...
  • 聚合函数的使用

    2019-11-05 20:50:26
    聚合函数同时对一组行进行操作,对每组返回一行输出结果。 注意: 由于聚合函数都是对成组的行进行操作,因此聚合函数也被称为分组函数(group function) 下表列出了部分常用的聚合函数,这些函数全部返回一个number...
  • pandas 聚合函数agg

    千次阅读 2020-06-28 16:24:51
    今天看到pandas的聚合函数agg,比较陌生,平时的工作中处理数据的时候使用的也比较少,为了加深印象,总结一下使用的方法,其实还是挺好用的。 DataFrame.agg(func,axis = 0,* args,** kwargs) func : 函数,...
  • 深入理解数据库当中的聚合函数

    千次阅读 2017-03-15 08:27:25
    核心内容: 1、聚合函数的相应概念 2、聚合函数的分类 3、聚合函数用法的注意事项 4、具体实例应用1、聚合函数的相应概念在数据库当中,函数分为两种:单行函数和多行函数,...2、聚合函数的分类聚合函数的分类:
  • MYSQL字符串聚合函数

    千次阅读 2019-08-07 21:22:01
    MYSQL字符串聚合函数学习笔记 mysql中可存储多种数据类型,varchar(字符串)则是其中一种最常见的类型。在对字符串类型进行读取时,我们有时候需要对取出的...下面介绍几个常见的聚合函数: 1.RIGHT(s,n) 取出字符...
  • ORACLE 常用函数——聚合函数

    千次阅读 2018-07-19 14:02:31
    ORACLE 常用函数    这个系列我将整理一些日常我们经常使用到的ORACLE函数,鉴于篇幅太长,我大体会按下面分类来整理、汇总这些常用的ORACLE函数,如果...1: 聚合函数 2: 日期函数 3: 字符串函数 4...
  • SQL Server聚合函数

    千次阅读 2019-02-28 10:42:34
    在本教程中,将了解和学习SQL Server聚合函数以及如何使用它们来计算聚合。 聚合函数执行一个或多个值的计算并返回单个值。 聚合函数通常与SELECT语句的GROUP BY子句和HAVING子句一起使用。 下表显示了SQL Server...
  • 汇总数据 主要用于对数据集的的数据进行汇总统计等操作,基本是聚合函数。 聚合的基本理念:不是返回所有指定的行,而是返回...在SQL查询的逻辑流程中,聚合函数是在From子句和Where子句之后执行的,这 意味着无须使
  • 转载自:... 原 postgresql 9.3 自定义聚合函数实现多行数据合并成一列 2015年12月16日 16:33:08 小灯光环 阅读数:10440 ...
  • 七、MySQL数据库之聚合函数

    千次阅读 2020-07-01 22:30:56
    我们先来介绍一下这个聚合函数是什么 这个聚合函数啊,就是人家MySQL给我们提供的一组函数,用来计算一些东西的。也被叫做这个组函数,这个聚合函数人家也说了,这个会和这个GROUP BY一起使用,HAVING我们后面说...
  • Android数据库高手秘籍(八)——使用LitePal的聚合函数

    万次阅读 多人点赞 2014-12-04 09:09:01
    但是呢,在SQL语句当中,有一种查询是比较特殊的,就是聚合函数查询,它不像传统查询一样是将表中的某些列的数据查询出来,而是将查询结果进行聚合和统计,最终将统计后的结果进行返回。因此,任何一个关系型数据库...
  • Oracle 聚合函数XMLAGG()

    千次阅读 2019-01-23 20:28:47
    数据清洗和转换过程中,需要把多行按照聚合成一行,下面介绍几个聚合函数。 特别要注意非聚合字段是null的情况,这是导致聚合字段过长的主要原因。 1.WM_CONCAT() 在11G和12C版本中,这个函数已经失效。 ...
  •  简单的说,聚合函数是按照一定的规则将多行(Row)数据汇总成一行的函数。对数据进行汇总前,还可以按照特定的列(column)将数据进行分组(Group by)再汇总,然后按照再次给定的条件进行筛选(Having).  聚合函数...
  • 下面来介绍常用的几个聚合函数聚合函数对一组值执行计算并返回单一的值) 规律如下:   group by 有一个原则,就是 select 后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面   例1 说明较直观 ...
  • Hive聚合函数总结

    2019-01-23 10:44:33
    GROUP BY语句通常会和聚合函数一起使用,按照一个或者多个列对结果进行分组,然后对每个组进行聚合操作 下面我们根据手机的名字对数据进行聚合操作,分别计算每个手机的销量 Having语句  HAVING子句允许用户...
  • 聚合函数 Aggregate Function

    千次阅读 2017-09-12 09:18:10
    聚合函数是用来统计每个分组的统计信息,它们要跟 group by 一起使用,用来将每个分组所有数据 聚合 成一条统计数据。 包括 max/min/count/avg/sum 等。 -- 按照部门进行分组统计的语句 select deptno, -- ...
  • 聚合函数用法以及注意事项

    千次阅读 2020-07-20 15:13:17
    在用SQL处理数值相关的列或者表的时候,会用聚合函数。 什么是聚合函数聚合函数一般会出现在哪些语句中呢? 聚合函数: 一、定义: SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数。常见的...
  • SQL Server之HAVING与聚合函数

    千次阅读 2019-02-23 08:13:37
    在对数值数据操作的时候,常常会对这些数据进行合计、求最大值等等,在SQL Server 中,类似SUM这些函数是不能与WHERE 关键字连用,而HAVING的出现则是弥补SQL Server中这一缺陷,HAVING与WHERE作用与用法一致。...
  • 聚合函数总结

    2012-04-11 16:37:25
    在数据库中常见的聚合函数有以下几种: COUNT:返回结果集中行的数目。 SUM:返回结果集中所有值的总和。 AVG :返回结果集中所有值的平均值。 MAX:返回结果集中所有值得最大值。 MIN:返回结果集中所有值的最小值...
  • mysql聚合函数的使用

    千次阅读 2013-08-14 22:13:36
    SQL提供了聚合函数(aggregate functions)功能来支持对大量数据进行总结的操作。 本文我们将具体来看看这些函数的功能和用法,包括添加数据和计算平均值的函数、对符合特定标准的记录进行计数的函数,以及找出表
  • 理解 group by 和聚合函数

    千次阅读 2019-04-26 09:19:39
    用了好久group by,为什么不能够select * from Table group by id,为什么一定不能是*,而是某一个列或者某个列的聚合函数,group by 多个字段可以怎么去很好的理解呢? =========正文开始===========  先来看下...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 83,939
精华内容 33,575
关键字:

下面数据聚合函数的是