aggregate相关知识
-
【Spark Java API】Transformation(6)—aggregate、aggregateByKeyaggregate官方文档描述:Aggregate the elements of each partition, and then the results for all the partitions,using given combine functions and a neutral "zero value". This function can return a different result type, U, than the type of this RDD, T. Thus, we&nbs
-
Linq专题之提高编码效率Aggregate方法我们知道linq是一个很古老的东西,大家也知道,自从用了linq,我们的foreach少了很多,但有一个现实就是我们在实际应用中使用到的却是屈指可数的几个方法,这个系列我会带领大家看遍linq,好的,废话不多说,先从Aggregate这个貂毛说起。 一:应用场景 前不久在写一个项目的时候,我需要捞取营销活动,刚好营销活动有两个类型,一种是普通活动,一个是触发式活动,由于存放在两张表中,并且捞取之后需要做一些实体的转存,等等计算,所以就有了类似这样的代码。 1 namespace ConsoleApplication1 2 { 3 class Program 4 { 5 static&n
-
Mongodb查询不重复数据项出现次数并排序列出不重复数据项 db.getCollection('records').aggregate([ {$match: {is_job: true}}, ]) 按指定字段进行统计 db.getCollection('records').aggregate([ {$match: {is_job: true}}, {$group: {_id: "$gname", count:{$sum: 1}}}, ]) group里面定义了数据返回的字段,现在有 id(id 的意思是作为主键)和 count 字段 按指定字段排序 db.getCollection('records').aggregate([ {$match: {is_job: true}}, {$group: {_id: "$gname", count:{$sum: 1}}}, { $sort
-
MySQL 聚合函数Summary: in this tutorial, you will learn how to use the MySQL aggregate functions including AVG, COUNT, SUM, MAXand MIN.Introduction to MySQL aggregate functionsThe data that you need is not always stored in the tables. However, you can get it by performing the calculations of the stored data when you select it. For example, you cannot get the total amount of each order by simply querying from the orderdetails
aggregate相关课程
aggregate相关教程
- 3. 构建这个项目 有了之前章节的铺垫,项目构建就变得非常容易了。我们将目录切换到 mall-aggregate 目录下,执行 mvn clean install 命令,就可以得到如下执行结果。[INFO] Scanning for projects...[WARNING][WARNING] Some problems were encountered while building the effective model for com.mic.tech:mall-web:war:1.0.0-SNAPSHOT[WARNING] 'dependencies.dependency.(groupId:artifactId:type:classifier)' must be unique: junit:junit:jar -> duplicate declaration of version (?) @ line 46, column 17[WARNING][WARNING] It is highly recommended to fix these problems because they threaten the stability of your build.[WARNING][WARNING] For this reason, future Maven versions might no longer support building such malformed projects.[WARNING][INFO] ------------------------------------------------------------------------[INFO] Reactor Build Order:[INFO][INFO] mall-aggregate [pom][INFO] mall-account [jar][INFO] mall-commodity [jar][INFO] mall-order [jar][INFO] mall-delivery [jar][INFO] mall-web Maven Webapp [war][INFO][INFO] --------------------< com.mic.tech:mall-aggregate >---------------------[INFO] Building mall-aggregate 1.0.0-SNAPSHOT [1/6][INFO] --------------------------------[ pom ]---------------------------------[INFO] ...[INFO] ---------------------< com.mic.tech:mall-account >----------------------[INFO] Building mall-account 1.0.0-SNAPSHOT [2/6][INFO] --------------------------------[ jar ]---------------------------------[INFO] ...[INFO] --------------------< com.mic.tech:mall-commodity >---------------------[INFO] Building mall-commodity 1.0.0-SNAPSHOT [3/6][INFO] --------------------------------[ jar ]---------------------------------[INFO] ...[INFO] ----------------------< com.mic.tech:mall-order >-----------------------[INFO] Building mall-order 1.0.0-SNAPSHOT [4/6][INFO] --------------------------------[ jar ]---------------------------------[INFO] ...[INFO] ---------------------< com.mic.tech:mall-delivery >---------------------[INFO] Building mall-delivery 1.0.0-SNAPSHOT [5/6][INFO] --------------------------------[ jar ]---------------------------------[INFO] ...[INFO] -----------------------< com.mic.tech:mall-web >------------------------[INFO] Building mall-web Maven Webapp 1.0.0-SNAPSHOT [6/6][INFO] --------------------------------[ war ]---------------------------------[INFO] ...[INFO] Building war: D:\code\mall-aggregate\mall-web\target\mall-web.war[INFO] ------------------------------------------------------------------------[INFO] Reactor Summary for mall-aggregate 1.0.0-SNAPSHOT:[INFO][INFO] mall-aggregate ..................................... SUCCESS [ 0.897 s][INFO] mall-account ....................................... SUCCESS [ 2.173 s][INFO] mall-commodity ..................................... SUCCESS [ 0.191 s][INFO] mall-order ......................................... SUCCESS [ 0.192 s][INFO] mall-delivery ...................................... SUCCESS [ 0.148 s][INFO] mall-web Maven Webapp .............................. SUCCESS [ 3.331 s][INFO] ------------------------------------------------------------------------[INFO] BUILD SUCCESS[INFO] ------------------------------------------------------------------------[INFO] Total time: 7.154 s[INFO] Finished at: 2020-05-09T22:55:42+08:00[INFO] ------------------------------------------------------------------------
- 2. Django 内嵌 ORM 模型的聚合操作 在 Django 中聚合函数是通过 aggregate 方法实现的,aggregate 方法返回的结果是一个字典。其支持的聚合函数如下:# 源码位置 django/db/models/aggregates.py...__all__ = [ 'Aggregate', 'Avg', 'Count', 'Max', 'Min', 'StdDev', 'Sum', 'Variance',]...注意:第一个是基类,从 Avg 开始,是支持的聚合方法,每个聚合方法的处理对应着一个类,而这些类分别继承自 Aggregate 类。aggregate 方法的使用也非常简单,只需要在该方法内添加需要执行的聚合函数即可,同时我们还可以打印出聚合函数执行的 SQL 语句,具体操作如下:(django-manual) [root@server first_django_app]# python manage.py shellPython 3.8.1 (default, Dec 24 2019, 17:04:00) [GCC 4.8.5 20150623 (Red Hat 4.8.5-39)] on linuxType "help", "copyright", "credits" or "license" for more information.(InteractiveConsole)>>> from hello_app.models import Member>>> from django.db.models import Avg, Max, Min, Sum>>> from django.db import connection>>> Member.objects.all().aggregate(avg_age=Avg('age'),sum_age=Sum('age'), max_age=Max('age'), min_age=Min('age')){'avg_age': 29.392156862745097, 'sum_age': 2998.0, 'max_age': '40', 'min_age': '20'}>>> print(connection.queries[-1]['sql'])SELECT AVG(`member`.`age`) AS `avg_age`, SUM(`member`.`age`) AS `sum_age`, MAX(`member`.`age`) AS `max_age`, MIN(`member`.`age`) AS `min_age` FROM `member`注意:connection.queries 中保存的是最近执行的 SQL 语句,我们在执行完 Django 的 ORM 操作后,可以取出最后一次执行的 SQL 语句进行查看。此外,对于聚合的函数,如果我们不知道属性名,则会有默认值:字段__聚合函数名。>>> from django.db.models import Count>>> Member.objects.all().aggregate(Count('age', distinct=True)){'age__count': 21}>>> print(connection.queries[-1]['sql'])SELECT COUNT(DISTINCT `member`.`age`) AS `age__count` FROM `member`相比前面在 MySQL 中执行聚合函数,我们这里缺少一个 GROUP BY 功能。如果想要对数据库中的记录先分组然后再进行某些聚合操作或排序时,需要使用 annotate 方法来实现。与 aggregate 方法不同的是,annotate 方法返回结果的不仅仅是含有统计结果的一个字典,而是包含有新增统计字段的查询集 (QuerySet)。下面是实现分组聚合的实例操作:>>> from django.db.models import Count, Avg, Sum, Max, Min>>> Member.objects.values('occupation').annotate(count=Count('age')).order_by('-count')<QuerySet [{'occupation': 'security', 'count': 15}, {'occupation': 'ui', 'count': 15}, {'occupation': 'product', 'count': 14}, {'occupation': 'leader', 'count': 14}, {'occupation': 'ops', 'count': 14}, {'occupation': 'web', 'count': 12}, {'occupation': 'teacher', 'count': 8}, {'occupation': 'server', 'count': 8}, {'occupation': 'java', 'count': 1}, {'occupation': 'c/c++', 'count': 1}]>>>> print(connection.queries[-1]['sql'])SELECT `member`.`occupation`, COUNT(`member`.`age`) AS `count` FROM `member` GROUP BY `member`.`occupation` ORDER BY `count` DESC LIMIT 21注意:上面的操作有如下说明:annotate 方法前面的 values 中出现的字段正是需要 GROUP BY 的字段。values 方法中出现多个值,即对多个字段进行 GROUP BY;annotate 方法的结果是一个查询集 (QuerySet),这样我们可以继续在后面盗用 filter()、order_by() 等方法进行进一步过滤结果;order_by 方法是对前面的 QuerySet 按某些字段排序,类似于 SQL 中的 ORDER BY 操作。排序字段前面加上 “-” 表示按倒序顺序,类似于 DESC 操作
- 2.3 添加 jxr 插件 Maven 的 jxr 插件是一个很强大的插件,可以随时查看项目的源代码。相同步骤,首先在 pom.xml 文件中加入 jxr 插件的依赖:<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jxr-plugin</artifactId> <version>3.0.0</version> <configuration> <aggregate>true</aggregate> <encoding>UTF-8</encoding> </configuration></plugin>待 Maven 下载该插件完成后,重新生成站点,并重启站点,即可在左边的目录中看到新生成的源码目录,点击后即阅读其中的源码。
- 2.1 添加 javadoc 插件 首先我们在插件列表中找到对应的插件,点击进入详情后,可以查看该插件的使用方式和 Maven 坐标。找到坐标后,我们在 pom.xml 文件中加入该坐标:<reporting> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-javadoc-plugin</artifactId> <version>3.2.0</version> <configuration> <aggregate>true</aggregate> </configuration> </plugin> </plugins></reporting>在插件的 Usage 页面我们可以看到添加该依赖的方式有两种。两种添加依赖方式的区别在于,如果将插件放入到 build 节点下,则需要会生成单独的 javadoc 文档,如果将插件的依赖放在 reporting 节点下,则产生的 javadoc 会作为项目报告的一部分,即会生成在站点的目录中。这里,我们选择的是后面一种,随着站点的生成,产生 javadoc 。此时我们在 mall-aggregate 目录下执行 mvn clean site 命令。站点生成后,执行mvn site:run 命令启动站点。站点启动成功后,尝试访问站点的地址 localhost:8080。我们可以看到在站点的目录中多了一个 Project Reports 的目录,点开后,我们可以看到 Javadoc 和 Test Javadoc,点击可以查看其产生的内容。
- 1. 构建简单的站点 首先我们打开 mall-aggregate 目录下的 pom.xml文件,并且在其中添加 maven-site-plugin 插件。<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-site-plugin</artifactId> <version>3.9.0</version></plugin>添加完插件之后,Maven 会自动的下载该插件。下载完成后,我们在 mall-aggregate 目录下执行mvn clean site命令。在控制台显示构建完成后,我们可以查看项目的 target 目录中,已经新产生了 site 目录。这个目录就是用来存放站点信息目录。站点生成成功后,我们可以执行mvn site:run命令,在运行这个站点。运行的时候会使用 Maven 内置的 jetty 容器来启动。站点启动后,我们可以在浏览器中输入localhost:8080/来浏览该站点。这时候,我们项目的简单站点就生成好了。在这个简单站点中,我们可以看到关于我们项目的一些信息,比如模块划分,依赖管理,插件管理,项目描述等等信息。有了这个站点,用户与开发者之间,以及开发者与开发者之间就能够更好的进行交流了。
- 1. 操作符函数的分类 筛选类操作符(Filtering operations):slice、filter系列、drop系列、take系列;并集类操作符(Aggregate operations):any、all、count、none、fold系列、forEach系列、max系列、min系列、reduce系列、sum系列;映射类操作符(Mapping operations):flatMap系列、groupBy系列、map系列;元素类操作符(Element operations):elementAt系列、first系列、find系列、indexOf系列、last系列、single系列;排序类操作符(Ordering operations):reverse、sort系列;生成类操作符(Generation operations):partition、plus系列、zip系列。Tips:由于篇幅问题,本节课我们会先将筛选类的操作符函数介绍完毕,其他操作函数后续文章进行讲解。
aggregate相关搜索
-
ajax
android
a href
abap
abap开发
abort
absolutelayout
abstractmethoderror
abstracttablemodel
accept
access
access教程
accordion
accumulate
acess
action
actionform
actionlistener
activity
addeventlistener