需求,实现查询,各手游的各渠道的充值人数,充值次数,以及充值总额
select app_id, count(1), count(distinct account_id), sum(recharge_sum) from table group app_id
mongo数据行如下: <!--more-->
> db.t_recharge_history.find({},{"_id":0,"d":0,"s":0});
{ "a" : "121200", "p" : "100037", "c" : "PE", "r" : "12", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 1 }
{ "a" : "121200", "p" : "100037", "c" : "PE", "r" : "1", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 2 }
{ "a" : "332222", "p" : "100037", "c" : "PE", "r" : "3", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 3 }
{ "a" : "333333", "p" : "100062", "c" : "PE", "r" : "123", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 33 }
{ "a" : "333334", "p" : "100062", "c" : "PE", "r" : "44", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 12 }
{ "a" : "333334", "p" : "100062", "c" : "PE", "r" : "44", "rd" : ISODate("2014-08-20T00:00:00Z"), "m" : 1 }
a: 账户
p: 应用id
c: 渠道
r: 角色ID
rd: 充值日期。
查询方法如下:
1. 先作 应用id, 渠道,玩家 的group , 算出每玩家的充值总额,充值次数
db.t_recharge_history.aggregate(
[
{
"$match":{
"rd" : ISODate("2014-08-20T00:00:00Z")
}
},
{ "$project": { "p": 1, "m":1, "a":1, "c":1,"_id":0 }},
{
"$group": {
"_id": { "app_id" :"$p", "channel_id" : "$c","account_id":"$a" } ,
"cnt": { "$sum": 1},
"rmb_sum": { "$sum": "$m"}
}
},
]
)
的出下面结果。
{
"result" : [
{
"_id" : {
"app_id" : "100037",
"channel_id" : "PE",
"account_id" : "121200"
},
"cnt" : 2,
"rmb_sum" : 3
},
。。。
2. 将1 的结果再次group,按照应用,渠道 作 group
db.t_recharge_history.aggregate(
[
{
"$match":{
"rd" : ISODate("2014-08-20T00:00:00Z")
}
},
{ "$project": { "p": 1, "m":1, "a":1, "c":1,"_id":0 }},
{
"$group": {
"_id": { "app_id" :"$p", "channel_id" : "$c","account_id":"$a" } ,
"cnt": { "$sum": 1},
"rmb_sum": { "$sum": "$m"}
}
},
{
"$group": {
"_id": { "app_id" :"$_id.app_id", "channel_id" : "$_id.app_id" } ,
"player_cnt": { "$sum": 1},
"recharge_items_cnt": { "$sum": "$cnt" },
"rmb_sum": { "$sum": "$rmb_sum"}
}
},
]
)
最终得出结果:
{
"result" : [
{
"_id" : {
"app_id" : "100062"
},
"player_cnt" : 2,
"recharge_items_cnt" : 3,
"rmb_sum" : 46
},
{
"_id" : {
"app_id" : "100037"
},
"player_cnt" : 2,
"recharge_items_cnt" : 3,
"rmb_sum" : 6
}
],
"ok" : 1
}
近期热议
推荐标签 标签
-
Visio
1 引用 • 2 回帖 • 2 关注
-
Bootstrap
18 引用 • 33 回帖 • 644 关注
Bootstrap 是 Twitter 推出的一个用于前端开发的开源工具包。它由 Twitter 的设计师 Mark Otto 和 Jacob Thornton 合作开发,是一个 CSS / HTML 框架。
-
开源中国
7 引用 • 86 回帖
开源中国是目前中国最大的开源技术社区。传播开源的理念,推广开源项目,为 IT 开发者提供了一个发现、使用、并交流开源技术的平台。目前开源中国社区已收录超过两万款开源软件。
-
Linux
952 引用 • 944 回帖
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多 CPU 的操作系统。它能运行主要的 Unix 工具软件、应用程序和网络协议,并支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
-
WebComponents
1 引用 • 9 关注
Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。
-
HBase
17 引用 • 6 回帖 • 60 关注
HBase 是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的 Google 论文 “Bigtable:一个结构化数据的分布式存储系统”。就像 Bigtable 利用了 Google 文件系统所提供的分布式数据存储一样,HBase 在 Hadoop 之上提供了类似于 Bigtable 的能力。
-
DNSPod
6 引用 • 26 回帖 • 532 关注
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
-
Markdown
170 引用 • 1529 回帖
Markdown 是一种轻量级标记语言,用户可使用纯文本编辑器来排版文档,最终通过 Markdown 引擎将文档转换为所需格式(比如 HTML、PDF 等)。
-
Spark
74 引用 • 46 回帖 • 568 关注
Spark 是 UC Berkeley AMP lab 所开源的类 Hadoop MapReduce 的通用并行框架。Spark 拥有 Hadoop MapReduce 所具有的优点;但不同于 MapReduce 的是 Job 中间输出结果可以保存在内存中,从而不再需要读写 HDFS,因此 Spark 能更好地适用于数据挖掘与机器学习等需要迭代的 MapReduce 的算法。
-
API
79 引用 • 431 回帖
应用程序编程接口(Application Programming Interface)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
-
SOHO
7 引用 • 55 回帖 • 3 关注
为成为自由职业者在家办公而努力吧!
-
RIP
8 引用 • 92 回帖 • 397 关注
愿逝者安息!
-
深度学习
54 引用 • 41 回帖
深度学习(Deep Learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
-
Scala
13 引用 • 11 回帖 • 160 关注
Scala 是一门多范式的编程语言,集成面向对象编程和函数式编程的各种特性。
-
链滴
173 引用 • 3849 回帖
链滴是一个记录生活的地方。
记录生活,连接点滴
-
AngularJS
12 引用 • 50 回帖 • 505 关注
AngularJS 诞生于 2009 年,由 Misko Hevery 等人创建,后为 Google 所收购。是一款优秀的前端 JS 框架,已经被用于 Google 的多款产品当中。AngularJS 有着诸多特性,最为核心的是:MVC、模块化、自动化双向数据绑定、语义化标签、依赖注入等。2.0 版本后已经改名为 Angular。
-
Hexo
22 引用 • 148 回帖 • 16 关注
Hexo 是一款快速、简洁且高效的博客框架,使用 Node.js 编写。
-
新人
52 引用 • 228 回帖
让我们欢迎这对新人。哦,不好意思说错了,让我们欢迎这位新人!
新手上路,请谨慎驾驶! -
区块链
92 引用 • 752 回帖 • 1 关注
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。所谓共识机制是区块链系统中实现不同节点之间建立信任、获取权益的数学算法 。
-
jsDelivr
5 引用 • 31 回帖 • 110 关注
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
-
LeetCode
209 引用 • 72 回帖 • 3 关注
LeetCode(力扣)是一个全球极客挚爱的高质量技术成长平台,想要学习和提升专业能力从这里开始,充足技术干货等你来啃,轻松拿下 Dream Offer!
-
Thymeleaf
11 引用 • 19 回帖 • 387 关注
Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。
-
强迫症
15 引用 • 161 回帖
强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。
-
域名
44 引用 • 208 回帖 • 4 关注
域名(Domain Name),简称域名、网域,是由一串用点分隔的名字组成的 Internet 上某一台计算机或计算机组的名称,用于在数据传输时标识计算机的电子方位(有时也指地理位置)。
- 30Seconds
-
Pipe
133 引用 • 1124 回帖 • 115 关注
Pipe 是一款小而美的开源博客平台。Pipe 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
-
前端
245 引用 • 1338 回帖
前端技术一般分为前端设计和前端开发,前端设计可以理解为网站的视觉设计,前端开发则是网站的前台代码实现,包括 HTML、CSS 以及 JavaScript 等。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于