我想做以下伪SQL:
SUM( SELECT a FROM tab WHERE b > 0);
Run Code Online (Sandbox Code Playgroud)
这种语法不起作用(至少在sqlite中不起作用),所以我试图弄清楚正确的措辞.
SELECT SUM(a) FROM tab WHERE b > 0 GROUP BY (*); % nope
SELECT SUM(a) FROM tab WHERE b > 0 GROUP BY (1); % nope
Run Code Online (Sandbox Code Playgroud)
建议?
我有几个表在我的应用程序中使用.一个维护产品列表,另一个维护对这些项目的评论,另一个包含这些项目的星级评级,最后一个包含这些项目的购买.我的表看起来像这样:
tbl_item:
---------
id INT (primary key)
name VARCHAR (product name)
tbl_comment:
------------
id INT (primary key)
item_id INT (foregin key -> tbl_item.id)
commenttext VARCHAR
tbl_rating:
-----------
id INT (primary key)
item_id INT (foreign key -> tbl_item.id)
rating DOUBLE
tbl_purchases:
--------------
id INT (primary key)
item_id INT (foreign key -> tbl_item.id)
Run Code Online (Sandbox Code Playgroud)
我想执行一个返回以下内容的查询:
* The design ID
* The average rating
* The number of comments
* The number of purchases
Run Code Online (Sandbox Code Playgroud)
我有类似的东西,但它返回不正确的数据:
SELECT d.id ,
COUNT(tbl_purchases.id) AS purchase_count,
COUNT(tbl_comment.id) AS comment_count, …Run Code Online (Sandbox Code Playgroud) 我的每个表都有一个"id"字段.鉴于表的列表可能会发生变化,我需要能够在所有这些中找到最高的ID.
有没有办法在oracle数据库中获取表的列表,聚合它们的行(只有id),然后得到max()?
PS这用于更新已经失败的序列.
我有一个包含1008412个观测值的大型数据集,列是customer_id(int),visit_date(日期,格式:"2010-04-04"),visit_spend(浮点数).
此日期函数用于聚合地图周数范围13-65:
weekofperiod <- function(dt) {
as.numeric(format(as.Date(dt), "%W")) + 52 * (as.numeric(format(as.Date(dt), "%Y"))-2010)
}
Run Code Online (Sandbox Code Playgroud)
每个customer_id在53周的时间内拥有可变数量的总访问量.对于每一个customer_id,我想要得到的总和spend_per_week,通过weekofperiod().下面的代码在功能上是正确但非常慢 - 评论让它更快?此外,aggregate()产生稀疏输出,其中没有访问的周数缺失,我初始化spend_per_week为0,然后逐行手动分配来自aggregate()的非零结果,以确保结果总是有53行.当然可以做得更好吗?
示例数据集行如下所示:
customer_id visit_date visit_spend
72 40 2011-03-15 18.38
73 40 2011-03-20 23.45
74 79 2010-04-07 150.87
75 79 2010-04-17 101.90
76 79 2010-05-02 111.90
Run Code Online (Sandbox Code Playgroud)
这里是空周的聚合调用和调整的代码:
for (cid in all_tt_cids) {
print_pnq('Getting statistics for cid', cid)
# Get row indices of the selected subset, for just this cid's …Run Code Online (Sandbox Code Playgroud) 说我有以下数据框:
df <- data.frame(sector = c(rep('a', 3), rep('b', 4)), id = 1:7)
Run Code Online (Sandbox Code Playgroud)
我想创建一个汇总表,报告每个扇区的ID列表,所以我这样做:
table <- xtable(aggregate(id ~ sector, df, paste))
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用xtable()上面的对象转换为LaTeX时,我收到以下错误:
> xtable(table)
Error in is.finite(x) : default method not implemented for type 'list'
Run Code Online (Sandbox Code Playgroud)
这是由第二列引起的,因为class(table$id)确认它是一个列表.
应该注意,将xtable()数据帧作为输入很好地处理.将"粘贴"更改为更常见的内容(如"sum"或"length")不会产生错误.
我能做些什么table(或为了xtable什么呢?所以它创造了我想要的桌子?所需的原始输出应如下所示:
\begin{table}[ht]
\centering
\begin{tabular}{rlr}
\hline
& sector & id \\
\hline
1 & a & 1, 2, 3 \\
2 & b & 4, 5, 6, 7\\
\hline
\end{tabular}
\end{table}
Run Code Online (Sandbox Code Playgroud) 假设我在R中有这个data.frame:
ages <- data.frame(Indiv = numeric(),
Age = numeric(),
W = numeric())
ages[1,] <- c(1,10,2)
ages[2,] <- c(1,15,5)
ages[3,] <- c(2,5,1)
ages[4,] <- c(2,100,2)
ages
Indiv Age W
1 1 10 2
2 1 15 5
3 2 5 1
4 2 100 2
Run Code Online (Sandbox Code Playgroud)
如果我做:
meanAge <- aggregate(ages$Age,list(ages$Indiv),mean)
Run Code Online (Sandbox Code Playgroud)
我得到每个Indiv(Group.1)的平均年龄(x):
Group.1 x
1 1 12.5
2 2 52.5
Run Code Online (Sandbox Code Playgroud)
但我想计算年龄的加权算术平均值(权重为W).如果我做:
WmeanAge <- aggregate(ages$Age,list(ages$Indiv),weighted.mean,ages$W)
Run Code Online (Sandbox Code Playgroud)
我明白了:
Error in weighted.mean.default(X[[1L]], ...) :
'x' and 'w' must have the same length
Run Code Online (Sandbox Code Playgroud)
我想我应该:
Group.1 x
1 1 …Run Code Online (Sandbox Code Playgroud) 我有一系列的观察结果描述了动物是否以及何时被发现在特定区域.以下样本表确定每天看到某种动物(status == 1)与否(status == 0).
id date status
1 1 2014-06-20 1
2 1 2014-06-21 1
3 1 2014-06-22 1
4 1 2014-06-23 1
5 1 2014-06-24 0
6 2 2014-06-20 1
7 2 2014-06-21 1
8 2 2014-06-22 0
9 2 2014-06-23 1
10 2 2014-06-24 1
11 3 2014-06-20 1
12 3 2014-06-21 1
13 3 2014-06-22 0
14 3 2014-06-23 1
15 3 2014-06-24 0
16 4 2014-06-20 1
17 4 2014-06-21 0 …Run Code Online (Sandbox Code Playgroud) 我很肯定这是一个非常简单的答案,但是我似乎无法在多个条件下进行聚合或转换
我有一个看起来像这样的表:
> head(df, n=10L)
STATE EVTYPE FATALITIES INJURIES
1 AL TORNADO 0 15
3 AL TORNADO 0 2
4 AL TORNADO 0 2
5 AL TORNADO 0 2
6 AL TORNADO 0 6
7 AL TORNADO 0 1
9 AL TORNADO 1 14
11 AL TORNADO 0 3
12 AL TORNADO 0 3
13 AL TORNADO 1 26
Run Code Online (Sandbox Code Playgroud)
显然,这种情况还在继续...我要做的是在执行过程中按STATE和EVTYPE折叠,以计算致命和伤害,因此,如果这10行是我的有效数据集,那么结果将是一个单行数据帧:
STATE EVTYPE FATALITIES INJURIES
1 AL TORNADO 2 74
Run Code Online (Sandbox Code Playgroud)
我的完整框架有很多状态和许多EVTYPE
我大约有300个csv文件,其中包含风速,温度,压力等各列,每行从2007年到2012年是不同的时间。每个文件都来自不同的位置。我想将所有文件合并为一个文件,这是所有300个文件的平均值。因此,新文件中每个文件的行数和列数均相同,但是每个单元格将是所有300个文件的相应平均值。是否有捷径可寻?
我有包含标签字段的文档.它是一个简单的数组,里面有标记名,里面没有对象也没有_id.只是像这样的普通标签["Protocol", "Access", "Leverage", "Capability"].
在我的组管道中,我尝试了类似的东西'selectedTags': { $addToSet: '$tags' }但最后我得到了一个包含标签数组的数组.我也是这样的$push.
我尝试使用$each或$pushAll但不支持它们作为分组操作符,因为我的shell告诉我.
有人可以帮我这个吗?
谢谢
编辑:
示例文档:
{
"_id" : "HWEdDGsq86x4ikDSQ",
"teamId" : "AdLizGnPuqbWNsFHe",
"ownerId" : "Qb5EigWjqn2t3bfxD",
"type" : "meeting",
"topic" : "Grass-roots hybrid knowledge user",
"fullname" : "Guidouil",
"startDate" : ISODate("2017-07-30T09:00:05.513Z"),
"shareResults" : true,
"open" : true,
"language" : "fr",
"tags" : [
"Protocol",
"Challenge",
"Artificial Intelligence",
"Capability"
],
"isDemo" : true,
"createdAt" : ISODate("2017-11-15T19:24:05.513Z"),
"participantsCount" : 10,
"ratersCount" : 10,
"averageRating" …Run Code Online (Sandbox Code Playgroud)