您不能(不应该)将非聚合放在查询SELECT行中GROUP BY.
但是,我想访问与max相关联的非聚合之一.用简单的英语,我想要一张每种类型最老的表格.
CREATE TABLE stuff (
id int,
kind int,
age int
);
Run Code Online (Sandbox Code Playgroud)
这个查询给了我以后的信息:
SELECT kind, MAX(age)
FROM stuff
GROUP BY kind;
Run Code Online (Sandbox Code Playgroud)
但它不是最有用的形式.我真的希望id与每一行相关联,以便我可以在以后的查询中使用它.
我正在寻找这样的东西:
SELECT id, kind, MAX(age)
FROM stuff
GROUP BY kind;
Run Code Online (Sandbox Code Playgroud)
这输出:
SELECT stuff.*
FROM
stuff,
( SELECT kind, MAX(age)
FROM stuff
GROUP BY kind) maxes
WHERE
stuff.kind = maxes.kind AND
stuff.age = maxes.age
Run Code Online (Sandbox Code Playgroud)
看起来真的应该离开以获取这些信息而无需加入.我只需要SQL引擎在计算最大值时记住其他列.
在RI中,经常zoo按月汇总每日数据(a ),使用以下内容:
result <- aggregate(x, as.yearmon, "mean", na.rm=TRUE)
我有办法在一周之内完成这项工作吗?
我有一个数据帧:
pe_odds[ [ 'EVENT_ID', 'SELECTION_ID', 'ODDS' ] ]
Out[67]:
EVENT_ID SELECTION_ID ODDS
0 100429300 5297529 18.00
1 100429300 5297529 20.00
2 100429300 5297529 21.00
3 100429300 5297529 22.00
4 100429300 5297529 23.00
5 100429300 5297529 24.00
6 100429300 5297529 25.00
Run Code Online (Sandbox Code Playgroud)
当我使用groupby和agg时,我得到了一个多索引的结果:
pe_odds.groupby( [ 'EVENT_ID', 'SELECTION_ID' ] )[ 'ODDS' ].agg( [ np.min, np.max ] )
Out[68]:
amin amax
EVENT_ID SELECTION_ID
100428417 5490293 1.71 1.71
5881623 1.14 1.35
5922296 2.00 2.00
5956692 2.00 2.02
100428419 603721 2.44 2.90
4387436 4.30 6.20
4398859 …Run Code Online (Sandbox Code Playgroud) 我有一个看起来像这样的表:
id,created,action
1,'2011-01-01 04:28:21','signup'
2,'2011-01-05 04:28:21','signup'
3,'2011-02-02 04:28:21','signup'
Run Code Online (Sandbox Code Playgroud)
如何选择和分组这些输出为:
year,month,total
2011,1,2
2011,2,1
Run Code Online (Sandbox Code Playgroud) 计算R中向量中每个唯一元素的出现次数的最快方法是什么?
到目前为止,我已经尝试了以下五个功能:
f1 <- function(x)
{
aggregate(x, by=list(x), FUN=length)
}
f2 <- function(x)
{
r <- rle(x)
aggregate(r$lengths, by=list(r$values), FUN=sum)
}
f3 <- function(x)
{
u <- unique(x)
data.frame(Group=u, Counts=vapply(u, function(y)sum(x==y), numeric(1)))
}
f4 <- function(x)
{
r <- rle(x)
u <- unique(r$values)
data.frame(Group=u, Counts=vapply(u, function(y)sum(r$lengths[r$values==y]), numeric(1)))
}
f5 <- function(x)
{
as.data.frame(unclass(rle(sort(x))))[,2:1]
}
Run Code Online (Sandbox Code Playgroud)
他们中的一些人没有按类别给出结果,但这并不重要.以下是结果(使用包microbenchmark):
> x <- sample(1:100, size=1e3, TRUE); microbenchmark(f1(x), f2(x), f3(x), f4(x), f5(x))
Unit: microseconds
expr min lq median uq max neval
f1(x) 4133.353 4230.3700 …Run Code Online (Sandbox Code Playgroud) 我们正在将我们的集群从Cassandra迁移到完整的ElasticSearch集群.我们正在为每秒平均约250-300个文档索引文档.在ElasticSearch 1.2.0中,它代表每天~8Go.
{
"generic":
{
"id": "twi471943355505459200",
"type": "twitter",
"title": "RT @YukBerhijabb: The Life is Choice - https://m.facebook.com/story.php?story_fbid=637864496306297&id=100002482564531&refid=17",
"content": "RT @YukBerhijabb: The Life is Choice - https://m.facebook.com/story.php?story_fbid=637864496306297&id=100002482564531&refid=17",
"source": "<a href=\"https://twitter.com/download/android\" rel=\"nofollow\">Twitter for Android</a>",
"geo": null,
"link": "http://twitter.com/rosi_sifah/status/471943355505459200",
"lang": "en",
"created_at": 1401355038000,
"author": {
"username": "rosi_sifah",
"name": "Rosifah",
"id": 537798506,
"avatar": "http://pbs.twimg.com/profile_images/458917673456238592/Im22zoIV_normal.jpeg",
"link": "http://twitter.com/rosi_sifah"
}
},
"twitter": {
// a tweet JSON
}
}
Run Code Online (Sandbox Code Playgroud)
我们的用户在我们的SQL数据库中保存请求,当他们要求他们的仪表板时,我们想要请求我们的ES集群查询(从数据库中检索)并使用新的ES聚合框架在其上进行一些聚合.
每个仪表板都显示一个明确的,用户选择的日期范围,因此我们始终使用
"range": {
"generic.created_at": {
"from": 1401000000000,
"to": 1401029019706 …Run Code Online (Sandbox Code Playgroud) 我需要一个真正的DBA的意见.Postgres 8.3在我的Macbook Pro上执行此查询需要200 ms,而Java和Python在20 ms(350,000行)内执行相同的计算:
SELECT count(id), avg(a), avg(b), avg(c), avg(d) FROM tuples;
Run Code Online (Sandbox Code Playgroud)
使用SQL数据库时这是正常的行为吗?
模式(该表包含对调查的响应):
CREATE TABLE tuples (id integer primary key, a integer, b integer, c integer, d integer);
\copy tuples from '350,000 responses.csv' delimiter as ','
Run Code Online (Sandbox Code Playgroud)
我用Java和Python编写了一些测试用于上下文,他们粉碎了SQL(纯Python除外):
java 1.5 threads ~ 7 ms
java 1.5 ~ 10 ms
python 2.5 numpy ~ 18 ms
python 2.5 ~ 370 ms
Run Code Online (Sandbox Code Playgroud)
即使sqlite3与Postgres竞争,尽管它假设所有列都是字符串(相比之下:即使只使用切换到数字列而不是Postgres中的整数导致10x减速)
我试过没有成功的调整包括(盲目地遵循一些网络建议):
increased the shared memory available to Postgres to 256MB
increased the working memory to 2MB
disabled connection …Run Code Online (Sandbox Code Playgroud) 这是一个非常愚蠢的事情,我知道,但我似乎没有得到Django聚合和注释函数的句柄.
我有一个非常简单的模型集:Events,Areas和Types.一个事件有外键指向Area和Type.我只想为任何区域提供即将发生的事件的数量,对于任何类型都是相同的,即Area1-5即将发生的事件,Area2-6或Type1-34事件等等.
我想避免编写自定义SQL,并尽可能使用q运算符.
您好,并提前感谢您的帮助,
(请注意注释部分以获得更多见解:即下面示例中的成本列已添加到此问题中; Simon提供了一个很好的答案,但成本列本身未在他的数据响应中表示,尽管他提供的功能与成本列一起使用)
我有一个数据集,让我们称之为"数据",看起来像这样
NAME DATE COLOR PAID COST
Jim 1/1/2013 GREEN 150 100
Jim 1/2/2013 GREEN 50 25
Joe 1/1/2013 GREEN 200 150
Joe 1/2/2013 GREEN 25 10
Run Code Online (Sandbox Code Playgroud)
我想要做的是将具有相同NAME值的记录的PAID(和COST)元素相加,并将行数(如本示例中所示)减少为2,这样我的新数据框如下所示:
NAME DATE COLOR PAID COST
Jim 1/2/2013 GREEN 200 125
Joe 1/2/2013 GREEN 225 160
Run Code Online (Sandbox Code Playgroud)
就日期而言,我并不关心哪一个在求和过程中幸存下来.
我已经达到了rowSums(数据),但我不确定如何使用它.任何帮助将不胜感激.
在我们的一个新的项目,我们在这篇文章的启发http://project-a.github.io/on-site-search-design-patterns-for-e-commerce/#generic-faceted-search做我们的"facet"结构.虽然我已经在文章描述的范围内使用它,但是在选择方面时我遇到了让它工作的问题.我希望有人能给出一些可以尝试的提示,所以我不必再将所有聚合重做为单独的聚合计算.
问题基本上是我们使用单个聚合一次计算所有"方面",但是当我添加过滤器(fx.检查品牌名称)时,它会在返回聚合时"删除"所有其他品牌.我基本上想要的是它在计算其他方面时应该使用该品牌作为过滤器,但在计算品牌聚合时则不然.这是必要的,因此用户可以选择多个品牌.
看看https://www.contorion.de/search/Metabo_Fein/ou1-ou2?q=Winkelschleifer&c=bovy(这是上面文章中描述的网站),我选择了"Metabo"和"Fein"制造商( Hersteller),并展示了Hersteller菜单,它显示了所有制造商,而不仅仅是所选择的制造商.所以我知道它有可能以某种方式,我希望有一个关于如何编写聚合/过滤器的提示,所以我得到了"正确的电子商务方面行为".
在ES中的产品我有以下结构:(与原始文章相同,但在命名时使用"C#"ified)
"attributeStrings": [
{
"facetName": "Property",
"facetValue": "Organic"
},
{
"facetName": "Property",
"facetValue": "Without parfume"
},
{
"facetName": "Brand",
"facetValue": "Adidas"
}
]
Run Code Online (Sandbox Code Playgroud)
所以上面的产品有2个属性/方面组 - 属性有2个值(有机,没有香水)和品牌有1个值(阿迪达斯).没有任何过滤器,我从以下查询计算聚合:
"aggs": {
"agg_attr_strings_filter": {
"filter": {},
"aggs": {
"agg_attr_strings": {
"nested": {
"path": "attributeStrings"
},
"aggs": {
"attr_name": {
"terms": {
"field": "attributeStrings.facetName"
},
"aggs": {
"attr_value": {
"terms": {
"field": "attributeStrings.facetValue",
"size": 1000,
"order": [
{
"_term": "asc"
}
]
} } } } } …Run Code Online (Sandbox Code Playgroud) aggregate ×10
group-by ×3
r ×3
mysql ×2
python ×2
sql ×2
annotate ×1
date ×1
django ×1
facet ×1
multi-index ×1
olap ×1
optimization ×1
pandas ×1
performance ×1
rowsum ×1
scalability ×1
zoo ×1