参考了:http://www.dixis.com/?p=531
http://mongoid.org/docs/querying/criteria.html
在网站的日常管理中,我们经常需要统计网站数据,比如每天的注册人数,每天上线人数,每天发贴人数,每天帖子数目
所以我们也就经常写些这样的语句:
Post.count :all, :conditions => ["created_at >= ? and created_at <= ? )", @start, @end], :group => 'date(created_at)'
来统计。
这样的语句得到的结果是类型为 ActiveSupport
::OrderedHash的数据。
其实用mongo and mongoid来做这样的事情也是比较容易的。
首先mongoid没有提供group by的功能,但是mongo有这样的功能。
conditions = Post.where(:created_at.gte => @start,:created_at.lte => @end).selector
temp_results = Notification.collection.group(:keyf => "function(doc) { d = new Date(doc.created_at); return {created_at: d.toLocaleDateString() }; }",
:initial => { :count => 0 },
:reduce => "function(doc,prev) { prev.count += +1; }",
:cond => conditions)
这样得到的temp_results是这样的数据
[#<BSON::OrderedHash:0x-24e6305e {"created_at"=>"03/12/2012", "count"=>2.0}>]
首先是一个数组,数组里面是一个hash。那么要想得到类型为ActiveSupport
::OrderedHash的数据。
可以这样再处理一下
@stats = ActiveSupport::OrderedHash.new
temp_results.each do |result|
@stats[result['created_at']] = result["count"]
end
分享到:
相关推荐
### Group By 和 Order By 的使用方法及组合应用 在数据库查询语言 SQL(Structured Query Language)中,`GROUP BY` 和 `ORDER BY` 是两个非常重要的子句,它们可以帮助我们更高效地管理和展示数据。 #### GROUP ...
本论文对 MySQL 数据库中的 group by 语句和 update 语句进行了深入研究,讨论了这些语句在数据库查询和修改中的应用,并给出了具体的解决方案。 一、MySQL 数据库中 group by 语句的用法 Group by 语句的作用是对...
SQL 中 GROUP BY 的用法及聚合函数 GROUP BY 是 SQL 中的一种分组查询语句,通常与聚合函数配合使用。...GROUP BY 语句是 SQL 中的一种强大工具,经常与聚合函数一起使用,用于对数据进行分组和计算。
Sql 聚合函数和 group by 的关系详解 Sql 聚合函数和 group by 是 SQL 语言中两个非常重要的概念,它们之间存在紧密的联系。那么,什么是聚合函数?什么是 group by?它们之间的关系是什么?在本文中,我们将详细地...
`GROUP BY`子句在SQL查询语言中用于将数据表中的行归类为一组,通常与聚合函数如`COUNT()`, `SUM()`, `AVG()`, `MAX()`, 和 `MIN()` 结合使用,以便对每一组的数据进行统计分析。例如,如果我们有一个销售记录表,并...
在SQL查询中,`ORDER BY`、`GROUP BY` 和 `HAVING` 是三个非常重要的子句,它们分别用于不同的数据处理操作。 1. **ORDER BY** 子句: - `ORDER BY` 用于对查询结果进行排序,按照指定的字段进行升序或降序排列。...
Oracle 中提供了多种 Group By 用法,包括 Rollup 和 Cube 等,使得数据的分组和统计更加灵活和强大。本文将详细介绍 Oracle 中 Group By 的多种用法,包括 Rollup 和 Cube 的原理和用法。 一、Rollup 用法 Rollup...
通常,我们使用聚合函数如COUNT、SUM、AVG、MIN和MAX等与Group By一起,以便对特定列进行分析。然而,当我们需要在分组统计时结合其他表的数据,Inner Join便发挥了重要作用。今天我们将深入探讨如何在SQL Server中...
在Oracle数据库中,`GROUP BY`语句是用于将数据行根据一个或多个列的值进行分组,以便对每个组执行聚合函数(如`SUM`、`COUNT`、`AVG`等)。`GROUP BY`的主要作用在于将具有相同列值的数据归类到一起,从而可以对每...
本文将从`GROUP BY`的基础概念出发,通过一系列示例和深入分析,帮助读者更清晰地理解`GROUP BY`的工作原理及其应用场景。 #### 一、`GROUP BY`的基本概念 `GROUP BY`子句用于结合`SELECT`语句,将来自同一个表的...
此时,直接删除重复行可能会导致数据丢失,而通过 `groupby` 和 `sum()` 的组合则可以很好地保留并统计这些重要信息。 #### 2. groupby与sum函数的基本用法 - **groupby**: `groupby` 是 Pandas 中的一个核心函数...
SQL中的`GROUP BY`语句是数据库查询中的一个重要部分,它用于将数据按照一个或多个列的值进行分组,以便对每个组执行聚合函数,如`SUM`、`COUNT`、`AVG`和`MAX`等。下面我们将详细讨论`GROUP BY`的使用方法及其相关...
在处理大型数据集时,GROUP BY 与聚合函数(如 SUM、COUNT、AVG、MAX 和 MIN)一起使用,能够帮助我们汇总数据,找出特定条件下的总体趋势和统计信息。 GROUP BY 语句的基本语法如下: ```sql SELECT column_name,...
综上所述,`GROUP BY`是SQL中用于数据分析和聚合的有力工具,结合聚合函数可以进行复杂的数据统计和处理,为报表和数据分析提供基础。正确理解和使用`GROUP BY`可以帮助我们从海量数据中提取出有价值的信息。
GROUP BY 子句是 SQL 语言中用于分组数据的关键字,它可以根据一个或多个列对数据进行分组,并对每个分组应用聚合函数,以便计算和输出所需的结果。GROUP BY 子句有多种形式,本文将通过实例来说明 GROUP BY 子句的...
5. **CUBE操作**: `WITH CUBE`产生多维分类数据集,例如`SELECT CategoryID, SupplierID, SUM(UnitPrice) AS SumPrice FROM Products GROUP BY CategoryID, SupplierID WITH CUBE`,它会生成所有可能的类别和供应商...
- 对于 `GROUP BY CUBE(A, B)`,产生的分组包括:`GROUP BY A, B`、`GROUP BY A`、`GROUP BY B` 和 `GROUP BY NULL`。 相比之下,`ROLLUP` 会按照层次递减的方式生成分组,只包括:`GROUP BY A, B`、`GROUP BY A` ...
在SQL中,分组查询是通过`GROUP BY`子句来实现的,它可以将数据按照一个或多个列的值进行分组,通常结合聚合函数一起使用,以便对每个分组执行计算。 1. SQL中的分组查询 在SQL中,使用`GROUP BY`语句进行分组操作...
### SQL语句中Group BY 和Rollup以及Cube用法 #### Group BY 子句 `GROUP BY`子句是SQL查询中的一个非常重要的部分,它用于将数据表中的行按照一个或多个列进行分组,使得可以对每个分组执行聚合函数(如SUM、...