需求,实现查询,各手游的各渠道的充值人数,充值次数,以及充值总额
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
}
近期热议
推荐标签 标签
-
BAE
19 引用 • 75 回帖 • 678 关注
百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。
-
ReactiveX
1 引用 • 2 回帖 • 182 关注
ReactiveX 是一个专注于异步编程与控制可观察数据(或者事件)流的 API。它组合了观察者模式,迭代器模式和函数式编程的优秀思想。
-
App
91 引用 • 384 回帖 • 1 关注
App(应用程序,Application 的缩写)一般指手机软件。
-
Spring
947 引用 • 1460 回帖 • 2 关注
Spring 是一个开源框架,是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作《Expert One-On-One J2EE Development and Design》中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 JavaEE 应用程序开发提供集成的框架。
-
Sphinx
1 引用 • 229 关注
Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。
-
OkHttp
16 引用 • 6 回帖 • 93 关注
OkHttp 是一款 HTTP & HTTP/2 客户端库,专为 Android 和 Java 应用打造。
-
Firefox
7 引用 • 30 回帖 • 381 关注
Mozilla Firefox 中文俗称“火狐”(正式缩写为 Fx 或 fx,非正式缩写为 FF),是一个开源的网页浏览器,使用 Gecko 排版引擎,支持多种操作系统,如 Windows、OSX 及 Linux 等。
-
Wide
30 引用 • 218 回帖 • 644 关注
Wide 是一款基于 Web 的 Go 语言 IDE。通过浏览器就可以进行 Go 开发,并有代码自动完成、查看表达式、编译反馈、Lint、实时结果输出等功能。
欢迎访问我们运维的实例: https://wide.b3log.org
-
Google
49 引用 • 192 回帖 • 1 关注
Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。
-
正则表达式
31 引用 • 94 回帖
正则表达式(Regular Expression)使用单个字符串来描述、匹配一系列遵循某个句法规则的字符串。
-
Chrome
63 引用 • 289 回帖
Chrome 又称 Google 浏览器,是一个由谷歌公司开发的网页浏览器。该浏览器是基于其他开源软件所编写,包括 WebKit,目标是提升稳定性、速度和安全性,并创造出简单且有效率的使用者界面。
-
Latke
71 引用 • 535 回帖 • 828 关注
Latke 是一款以 JSON 为主的 Java Web 框架。
-
Maven
188 引用 • 319 回帖 • 241 关注
Maven 是基于项目对象模型(POM)、通过一小段描述信息来管理项目的构建、报告和文档的软件项目管理工具。
-
SendCloud
2 引用 • 8 回帖 • 505 关注
SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。
-
jsDelivr
5 引用 • 31 回帖 • 105 关注
jsDelivr 是一个开源的 CDN 服务,可为 npm 包、GitHub 仓库提供免费、快速并且可靠的全球 CDN 加速服务。
- B3log
-
Git
211 引用 • 358 回帖 • 1 关注
Git 是 Linux Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。
-
自由行
• 4 关注
-
Caddy
10 引用 • 54 回帖 • 180 关注
Caddy 是一款默认自动启用 HTTPS 的 HTTP/2 Web 服务器。
-
SVN
29 引用 • 98 回帖 • 696 关注
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。
-
GitHub
209 引用 • 2040 回帖
GitHub 于 2008 年上线,目前,除了 Git 代码仓库托管及基本的 Web 管理界面以外,还提供了订阅、讨论组、文本渲染、在线文件编辑器、协作图谱(报表)、代码片段分享(Gist)等功能。正因为这些功能所提供的便利,又经过长期的积累,GitHub 的用户活跃度很高,在开源世界里享有深远的声望,并形成了社交化编程文化(Social Coding)。
-
Excel
31 引用 • 28 回帖
-
DNSPod
6 引用 • 26 回帖 • 537 关注
DNSPod 建立于 2006 年 3 月份,是一款免费智能 DNS 产品。 DNSPod 可以为同时有电信、网通、教育网服务器的网站提供智能的解析,让电信用户访问电信的服务器,网通的用户访问网通的服务器,教育网的用户访问教育网的服务器,达到互联互通的效果。
-
Java
3201 引用 • 8216 回帖 • 4 关注
Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的。Java 技术具有卓越的通用性、高效性、平台移植性和安全性。
-
Eclipse
76 引用 • 258 回帖 • 627 关注
Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。
-
Swagger
26 引用 • 35 回帖 • 2 关注
Swagger 是一款非常流行的 API 开发工具,它遵循 OpenAPI Specification(这是一种通用的、和编程语言无关的 API 描述规范)。Swagger 贯穿整个 API 生命周期,如 API 的设计、编写文档、测试和部署。
-
Telegram
5 引用 • 35 回帖
Telegram 是一个非盈利性、基于云端的即时消息服务。它提供了支持各大操作系统平台的开源的客户端,也提供了很多强大的 APIs 给开发者创建自己的客户端和机器人。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于