标签: aggregate

NHibernate Criteria按另一个表中的groupid和itemid的总和选择项目

public class SearchText
{
    public virtual int Id { get; set; }
    public virtual string Text { get; set; }
}

public class SearchTextLog
{
    public virtual int Id { get; set; }
    public virtual SearchText SearchText { get; set; }
    public virtual User User { get; set; }
    public virtual int SearchCount { get; set; }
    public virtual DateTime LastSearchDate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我试图根据SearchTextLog中的计数总和选择前5个SearchText项.目前我只能通过首先执行查询来获取前5个项目,然后在第二个查询中使用结果来解决此问题.我想知道是否有人可以向我展示光线,并教我如何将这两个单独的查询整合到一个单元中.

这是我目前的情况:

var topSearchCriteria = Session.CreateCriteria(typeof (SearchTextLog))
            .SetProjection(Projections.ProjectionList()
                            .Add(Projections.GroupProperty("SearchText.Id"))
                            .Add(Projections.Alias(Projections.Sum("SearchCount"), "SearchCount")))
            .AddOrder(Order.Desc("SearchCount"))
            .SetMaxResults(topSearchLimit)
            .List<int>(); …
Run Code Online (Sandbox Code Playgroud)

nhibernate aggregate criteria nhibernate-projections

4
推荐指数
1
解决办法
1万
查看次数

按时间分组记录

我有一个包含datetime列和一些misc其他列的表.datetime列表示发生的事件.它可以包含一个时间(当时发生的事件)或NULL(事件未发生)

我现在想要计算特定间隔(15分钟)内发生的记录数,但不知道该怎么做.

例:

id | time                | foreign_key
1  | 2012-01-01 00:00:01 | 2
2  | 2012-01-01 00:02:01 | 4
3  | 2012-01-01 00:16:00 | 1
4  | 2012-01-01 00:17:00 | 9
5  | 2012-01-01 00:31:00 | 6
Run Code Online (Sandbox Code Playgroud)

我现在想要创建一个创建类似于以下结果集的查询:

interval            | COUNT(id)
2012-01-01 00:00:00 | 2
2012-01-01 00:15:00 | 2
2012-01-01 00:30:00 | 1
Run Code Online (Sandbox Code Playgroud)

这在SQL中是否可行,或者任何人都可以建议我可以使用哪些其他工具?(例如,将数据导出到电子表格程序不会有问题)

sql sqlite group-by aggregate

4
推荐指数
1
解决办法
4806
查看次数

使用总行创建表格摘要

是否有优雅的单线(使用任何R包)来完成以下任务?

tab <- aggregate(. ~ Species, dat=iris, mean)
total <- data.frame(Species='Overall', t(colMeans(iris[,-5])))
rbind(tab, total)
Run Code Online (Sandbox Code Playgroud)

aggregate r

4
推荐指数
1
解决办法
769
查看次数

另一个聚合

(对不起,如果标题不是很有用:我不知道如何更好地定义这个问题)

我的数据格式如下:

原始数据

在每个组中,我有一个pre值和一个或两个post值.我想将此表转换为以下内容:

我想得到什么

我想用以下的方式对数据进行分组:

aggregate(mydata, by = group, FUN = myfunction)
Run Code Online (Sandbox Code Playgroud)

要么

ddply(mydata, .(group), .fun = myfunction)
Run Code Online (Sandbox Code Playgroud)

并在我的函数中处理每个组的元素.但我看不出如何做到这一点,因为我需要同时通过typevalue同时向我的功能.有一个更好的方法吗?

更新:快速和脏的样本数据集:

mydata <- data.frame(group = sample(letters[1:5], 10, replace = TRUE), 
                     type = sample(c("pre", "post"), 10, replace = TRUE), 
                     value = rnorm(10))
Run Code Online (Sandbox Code Playgroud)

aggregate r reshape

4
推荐指数
1
解决办法
83
查看次数

Django 查询集:切片查询集后聚合不起作用

Car.objects.all() # 5 cars in db, every car costs 1000 $

Car.objects.all().aggregate(Sum("price")) # result: 5000

# aggregate only on a subset

Car.objects.all()[3:].aggregate(Sum("price")) # result: 5000!, not 3000

# with filter()[3:] i got the same results!
Run Code Online (Sandbox Code Playgroud)

为什么?切片未在数据库中评估?

我怎样才能用聚合来实现这一点?

python django aggregate django-queryset slice

4
推荐指数
1
解决办法
1024
查看次数

汇总日期和计算平均值

我有一个数据框,在一列中有一长串日期,在另一列中有值,如下所示:

set.seed(1234)
df <- data.frame(date= as.Date(c('2010-09-05', '2011-09-06', '2010-09-13', 
                                 '2011-09-14', '2010-09-23', '2011-09-24',
                                 '2010-10-05', '2011-10-06', '2010-10-13', 
                                 '2011-10-14', '2010-10-23', '2011-10-24')),
                 value= rnorm(12))
Run Code Online (Sandbox Code Playgroud)

我需要计算每个月每10天的平均值,但无论年份如何,都是这样:

dfNeeded <- data.frame(datePeriod=c('period.Sept0.10', 'period.Sept11.20', 'period.Sept21.30',
                                    'period.Oct0.10', 'period.Oct11.20', 'period.Oct21.31'),
                       meanValue=c(mean(df$value[c(1,2)]), 
                                   mean(df$value[c(3,4)]),
                                   mean(df$value[c(5,6)]),
                                   mean(df$value[c(7,8)]), 
                                   mean(df$value[c(9,10)]),
                                   mean(df$value[c(11,12)])))
Run Code Online (Sandbox Code Playgroud)

有这么快的方法吗?

aggregate r date

4
推荐指数
1
解决办法
2463
查看次数

R: Sum Complete.cases in a column 按另一列中的值分组(或排序)

我正在使用airqualityR 中可用的数据集,并尝试计算数据中不包含任何NAs的行数,同时按Month.

数据如下所示:

head(airquality)
#   Ozone Solar.R Wind Temp Month Day
# 1    41     190  7.4   67     5   1
# 2    36     118  8.0   72     5   2
# 3    12     149 12.6   74     5   3
# 4    18     313 11.5   62     5   4
# 5    NA      NA 14.3   56     5   5
# 6    28      NA 14.9   66     5   6
Run Code Online (Sandbox Code Playgroud)

如您所见,我NA在列OzoneSolar.R. 我使用的功能complete.cases如下:

x  <- airquality[,1] # for …
Run Code Online (Sandbox Code Playgroud)

sorting aggregate r

4
推荐指数
1
解决办法
3681
查看次数

使用 data.table (R 3.1.1) 进行字符串分组(聚合)

输入:我有这个数据:

library(data.table)
ids <- c(10, 10, 10, 11, 12, 12)
items <- c('soup', 'rice', 'lemon', 'chicken', 'lamb', 'noodles')
orders <- as.data.table(list(id=ids, item=items))

> orders
   id    item
1: 10    soup
2: 10    rice
3: 10   lemon
4: 11 chicken
5: 12    lamb
6: 12 noodles
Run Code Online (Sandbox Code Playgroud)

目标:需要达到这一点(按 ID 对所有项目进行分组):

   id        items
1: 10    soup,rice,lemon
2: 11    chicken
3: 12    lamb,noodles
Run Code Online (Sandbox Code Playgroud)

我做了什么:我在 R 3.1.1(最新版本)上使用 data.table - 尝试了以下方法,它应该可以工作:

orders[,list(items=list(item)), by=id]
Run Code Online (Sandbox Code Playgroud)

但是得到以下(不正确的)输出:

   id       items
1: 10 lamb,noodles,lemon
2: 11 lamb,noodles,lemon
3: 12 …
Run Code Online (Sandbox Code Playgroud)

aggregate r data.table

4
推荐指数
1
解决办法
1622
查看次数

Elasticsearch中的分析

我正在使用Analytic of events,我使用hadoop处理日志并将一些结果存储在Mysql中.由于日志不断出现,因此可伸缩性问题现在无法正常工作.

我们需要显示每年,每月,每周,每天,每小时的统计数据以及过滤功能我们的样本可以为10万用户增长,每个小时每小时使用20个网站
100,000(用户)*20(独特网站)*2(位置)*24 (小时)= 96,000,000(每天最多9600万条记录)

我们的表看起来像
event_src_id,时间,用户,网站,位置,一些统计数据

一些查询示例是

1) select website, sum(stats), count(distinct(user_id)) from table group by website;
2) select website, sum(stats), count(distinct(user_id)) from table where YEAR(Time) = 2009 group by website, MONTH(Time);
3) select website, sum(stats), count(distinct(user_id)) from table group by website where event_src_id=XXXXXXXXXXX;
4) select website, sum(stats), count(distinct(user_id)) from table group by website where time > 1 jan 2014 and time <=31 jan 2014;
5) select website, location, sum(stats), count(distinct(user_id)) from table group by website, location; …
Run Code Online (Sandbox Code Playgroud)

hadoop aggregate olap-cube elasticsearch

4
推荐指数
1
解决办法
2046
查看次数

如何获得数据框中每个组的 10 个最高值?

我假设这是一件容易的事情,但我无法解决我的问题。

我有一个包含 9 列的数据框,我想为第一列中给出的每个组排序第 4 列 (LumenLenght) 的最高 3 个值。

我希望能够:a)找到为每个 SampleID(第一列)分隔的第 4 列具有最高值的 10 行 b)平均每个 SampleID 的 10 个值

数据框

我当前的代码 a) 首先根据 SampleID 和 LumenLength 对值进行排序,b) 将每个 SampleID 的最高、第二高和第三高的 LumenLength 值分开。

sorted.v= arrange(sorted.v, desc(SampleId), LumenLength)
maxlength1 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 1)#highest value
maxlength2 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 2)#second highest value
maxlength3 = aggregate(sorted.v$LumenLength,by = list(sorted.v$SampleId),  FUN = tail, n = 3)#3. highest value
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我还没有真正达到我的目标。我也很确定有更好的方法来做到这一点,但我现在卡住了。

sorting aggregate r

4
推荐指数
1
解决办法
7842
查看次数