考虑一个如下结构的表格或CTE:
Name Num
---- ----
Abc 12
Abc 12
XYZ 70
XYZ 80
XYZ 85
Bar 50
Bar 55
Foo 44
Foo 44
Baz 88
Run Code Online (Sandbox Code Playgroud)
要求是确定的名称,其中多个不同的订购数量存在.
期望的结果集是
Name
----
XYZ
Bar
Run Code Online (Sandbox Code Playgroud)
您将使用什么TSQL语句来派生此结果集?
更新:确实,给定名称可能有2个以上的条目.
标准SQL聚合函数max()将返回组中的最高值; min()将返回最低点.
Oracle中是否有一个聚合函数来从组中返回一个随机值?还是一些技术来实现这一目标?
例如,给出表格foo:
group_id value
1 1
1 5
1 9
2 2
2 4
2 8
Run Code Online (Sandbox Code Playgroud)
SQL查询
select group_id, max(value), min(value), some_aggregate_random_func(value)
from foo
group by group_id;
Run Code Online (Sandbox Code Playgroud)
可能产生:
group_id max(value), min(value), some_aggregate_random_func(value)
1 9 1 1
2 8 2 4
Run Code Online (Sandbox Code Playgroud)
很明显,最后一列是该组中的任何随机值.
基于域驱动设计的以下定义:处理软件核心的复杂性,
聚合是:关联对象的群集,出于数据更改的目的,这些对象被视为一个单元。外部引用仅限于AGGREGATE的一个成员,称为根。一组一致性规则适用于AGGREGATE的边界。
我认为Aggregate根目录不应包含对存储库的引用。由于聚合根是唯一应保留对其实体和聚合的引用的根,因此它们应该是私有的。
我的存储库如何保留并恢复此私有数据?
编辑:
让我们以经典的Order,OrderLines为例。
订单是聚合根。
它的行是实体。
由于聚合根(订单)是唯一允许保存对其实体(订单行)的引用的对象,因此我不知道如何持久存储库中的订单行。
persistence domain-driven-design aggregate ddd-repositories aggregateroot
我在使用data.table包时遇到了一些麻烦.我正在使用这个包,因为它似乎非常快速和高效的内存,它将工作在一个非常大的数据集(约6米x 300).
所以,基本上我遇到的问题的一个例子是:
AA <- matrix(runif(50,0,100), 10,5)
AA <- data.table(AA)
colnames(AA) <- c("one","two","three","four","five")
AA[,"key"] <- c(1:10)
setkey(AA,key)
BB <- matrix(c("A1","A1","B1","A1","C1","F1","T1","Y1","S1","S1","B2","C2","V2","G2","R2","U2","P2","Q2","A2","R2"),10,2)
BB <- data.table(BB)
BB[,"key"] <- c(1:10)
setkey(BB,key)
CC <- AA[BB]
Run Code Online (Sandbox Code Playgroud)
这给出了以下内容
> CC
key one two three four five V1 V2
[1,] 1 70.528360 7.901987 66.827238 44.51487 26.22273 A1 B2
[2,] 2 38.560889 31.808611 7.877950 34.51093 51.27989 A1 C2
[3,] 3 70.164154 16.636281 59.127573 79.95673 19.07643 B1 V2
[4,] 4 82.019267 86.958215 3.335632 44.19048 46.29047 A1 G2
[5,] 5 24.980403 …Run Code Online (Sandbox Code Playgroud) 我有两列数据.在一列中,它是日期,在另一列中,它是流量数据.
我能够将数据读取为日期和流量数据.我使用了以下代码:
creek <- read.csv("creek.csv")
library(ggplot2)
creek[1:10,]
colnames(creek) <- c("date","flow")
creek$date <- as.Date(creek$date, "%m/%d/%Y")
Run Code Online (Sandbox Code Playgroud)
我的数据链接是https://www.dropbox.com/s/eqpena3nk82x67e/creek.csv
现在,我想找到每年的摘要.我想特别了解平均值,中位数,最大值等.
谢谢.
此致,Jdbaba
我有一个像这样的大数据框:
ID c_Al c_D c_Hy occ
A 0 0 0 2306
B 0 0 0 3031
C 0 0 1 2581
D 0 0 1 1917
E 0 0 1 2708
F 0 1 0 2751
G 0 1 0 1522
H 0 1 0 657
I 0 1 1 469
J 0 1 1 2629
L 1 0 0 793
L 1 0 0 793
M 1 0 0 564
N 1 0 1 2617
O 1 0 1 …Run Code Online (Sandbox Code Playgroud) 场景:我有一个df,多个用户的"得分"尝试通过测试.每次观察都是尝试使用userID和得分.有些用户可能会传递他们的第一次尝试,有些可能需要几次; 他们得到无限的尝试.我想找到每个用户的平均分数.
例如:
userID = c(1:20, sample(1:20, 10, replace = TRUE))
score = c(rnorm(15, mean = 60, sd = 10), rnorm(8, mean = 70, sd = 5),
rnorm(7, mean = 90, sd = 2))
scores = data.frame(userID, score)
Run Code Online (Sandbox Code Playgroud)
我需要一个最终结果数据框,它只是一个唯一的用户ID列表,其中包含所有尝试的平均值(无论是尝试过一次还是多次).
在我试过的所有愚蠢的方法中,我最近的是:
avgScores = aggregate(scores, by=list("userID"), "mean")
Run Code Online (Sandbox Code Playgroud)
并收到以下错误消息:"参数必须具有相同的长度." 我也尝试过排序和子设置(实际的数据框有时间戳),摆动我的鼻子,一起敲我的鞋子,但我没有在哪里,这个noob大脑被炸.
谢谢
我的数据有年龄,也有每月付款.
我正在尝试汇总汇总金额,但没有总结年龄(平均值会有效).
是否可以为不同的列使用不同的功能?
说我有这个data.frame, data:
data <- data.frame(val=c(rep(6,10), rep(7, 15), rep(8, 20), rep(9, 25), rep(10, 100), rep(11, 20), rep(12, 15), rep(13, 10)))
data$plus <- data$val + 100
Run Code Online (Sandbox Code Playgroud)
我的目标是创建一个data.frame具有每个频率val和相关plus值的新.
我目前的策略是创建一个表(称为table),然后合并频率.然后只保留每组中的第一个观察:
table <- table(data$val)
df1 <- data.frame(val = as.integer(names(table)[1:length(table)]), N = table[1:length(table)])
df2 <- merge(data, df1)
df3 <- do.call(rbind, by(df2, list(df2$val), FUN=function(x) head(x, 1)))
Run Code Online (Sandbox Code Playgroud)
这有效,但看起来很笨重.
例如,在Stata中,代码将更简单.就像是:
bys val plus: egen max = _N
bys val plus: gen first = _n==1
keep if first==1
Run Code Online (Sandbox Code Playgroud)
有没有办法简化或使R代码更优雅?
我在python中有一个有很多行的对象:
输入:
Team1 Player1 idTrip13 133
Team2 Player333 idTrip10 18373
Team3 Player22 idTrip12 17338899
Team2 Player293 idTrip02 17656
Team3 Player20 idTrip11 1883
Team1 Player1 idTrip19 19393
Run Code Online (Sandbox Code Playgroud)
我需要聚合这些数据(如数据透视表).
OUTPUT我正在努力:
Team1 Player1 : 2 trips : sum(133+19393)
Team2 Player333 : 1 trip : 18373; Player293 : 1 trip : 17656
Team3 Player22 : 1 trip : 17338899; Player20 : 1 trip : 1883
Run Code Online (Sandbox Code Playgroud)
有人可以建议在Python中使用适当的对象,以便我可以有以下输出吗?
print team, player, trips, time
Run Code Online (Sandbox Code Playgroud) aggregate ×10
r ×5
data.table ×2
group-by ×2
pandas ×2
python ×2
dataframe ×1
merge ×1
oracle ×1
persistence ×1
plsql ×1
random ×1
split ×1
sql ×1
sql-server ×1
summary ×1
t-sql ×1
time-series ×1
unique ×1