我正在尝试返回已租用特定电影的特定州的客户数量,其中租户表包含两列,一列用于客户ID,另一列用于电影ID.该函数接受电影ID和状态,并返回一个包含客户数量的整数.
现在我有一个实现,但它会计算整个查询返回的行数:
SELECT COUNT(*) as numCustomers FROM CUSTOMER C, RENTS R WHERE C.ST = '" + state + "' AND R.mid = " + movieID
Run Code Online (Sandbox Code Playgroud)
然后我算出行数.我想能够检查numCustomers的正确数据.谢谢!
DUPLICATE: 在order_by()中使用Django自定义模型方法属性
我有两个型号; 一个存储帖子,另一个存储在这些帖子上进行的投票,使用ForeignKey字段相关.每个投票都存储为一个单独的记录,因为我需要跟踪投票的用户和日期时间.
我创建了一个帮助函数,使用Django 1.1聚合Sum函数计算所有投票.
class Post(models.Model):
...some fields...
def tally(self):
return self.vote_set.all().aggregate(Sum('value'))['value__sum'] or 0
class Vote(models.Model):
post = models.ForeignKey(Post)
value = models.IntegerField()
...some fields...
Run Code Online (Sandbox Code Playgroud)
我需要做的一个查询需要做一次order_by计数.然而:
Post.objects.all().order_by('tally')
Run Code Online (Sandbox Code Playgroud)
产生以下模板错误:
渲染时捕获异常:无法将关键字"tally"解析为字段.选项包括:date_created,description,id,is_active,name,related,slug,user,vote
有没有办法让order_by()函数可以调用?
我一直试图聚合(一些不稳定的)每日数据.我实际上正在使用csv数据,但如果我重新创建它 - 它看起来像这样:
library(zoo)
dates <- c("20100505", "20100505", "20100506", "20100507")
val1 <- c("10", "11", "1", "6")
val2 <- c("5", "31", "2", "7")
x <- data.frame(dates = dates, val1=val1, val2=val2)
z <- read.zoo(x, format = "%Y%m%d")
Run Code Online (Sandbox Code Playgroud)
现在我想每天聚合这个(注意有时候一天有> 1个数据点,有时候也没有.
我已经尝试了很多很多变化,但我似乎无法聚合,所以例如这失败了:
aggregate(z, as.Date(time(z)), sum)
# Error in Summary.factor(2:3, na.rm = FALSE) : sum not meaningful for factors
Run Code Online (Sandbox Code Playgroud)
关于聚合似乎有很多内容,我尝试了很多版本,但似乎无法在日常水平上总结这一点.除了每日总结之外,我还想运行cummax和累积平均值.
任何帮助都会受到高度赞赏.
更新
我实际使用的代码如下:
z <- read.zoo(file = "data.csv", sep = ",", header = TRUE, stringsAsFactors = FALSE, blank.lines.skip = T, na.strings="NA", format = "%Y%m%d");
Run Code Online (Sandbox Code Playgroud)
似乎我(无意)引用上面的数字类似于实践中发生的事情,因为当我这样做时: …
我有一个PostgreSQL数据库表,具有以下简化结构:
基本上,该表包含许多用于设备的二维航路点数据.现在我想设计一个减少输出中坐标数量的查询.它应聚合附近的坐标(对于某个x,y阈值)一个例子:
第1行:DEVICE1; 603; 1205
第2行:DEVICE1; 604; 1204
如果阈值为5,那么这两行应该聚合,因为方差小于5.任何想法如何在PostgreSQL或SQL中一般这样做?
我正在使用PostgreSQL学习SQL,并且遇到了有关嵌套聚合函数的问题.
我试图找到具有最大数量的房产的私人业主的细节,我有两个关系,私人所有者和propertyforrent与propertyforrent有一个外键,ownwerno.
我怀疑我的问题是我试图嵌套聚合函数的地方,但我看不到解决方法.
注意: - 我正在使用的数据库在propertyforrent属性ownwerno中有一个拼写错误,它应该是ownerno.
我试图使用的代码如下所示〜: -
SELECT o.fname, o.lname, telno
FROM privateowner o
WHERE o.ownerno = (SELECT p.ownwerno
FROM propertyforrent p
HAVING COUNT(p.ownwerno) = MAX(COUNT(o.ownerno)));
Run Code Online (Sandbox Code Playgroud)
其伴随的错误如下: -
ERROR: column "p.ownwerno" must appear in the GROUP BY clause or be used in a
aggregate function
LINE 3: WHERE o.ownerno = (SELECT p.ownwerno
^
********** Error **********
ERROR: column "p.ownwerno" must appear in the GROUP BY clause or be used in an
aggregate function
SQL state: 42803
Character: 78
Run Code Online (Sandbox Code Playgroud)
任何见解都会很精彩.
我有一个用于聚合的data.frame,它完全由ddplyplyr 完成.现在的目标是编写一个将聚合对象自动绑定到原始数据的函数.问题是,可能有多个聚合变量.
以下是仅包含一个聚合变量的示例:
这里有我的数据框:
M O
1 1 6
2 2 7
3 2 4
4 1 6
Run Code Online (Sandbox Code Playgroud)
然后ddply我得到"O"的聚合:
TEST <- ddply(.data = DF,
.variables = c("M"),
.fun = summarise,
NEW = sum(O))
Run Code Online (Sandbox Code Playgroud)
结果如下:
M NEW
1 1 12
2 2 11
Run Code Online (Sandbox Code Playgroud)
我现在要做的是编写一个函数,使我能够将变量" New" 绑定到原始data.frame.
在循环中,它适用于:
for(i in 1:nrow(TEST)) {
DF$New[DF$M == TEST$M[i]] <- TEST$NEW[i]
}
M O New
1 1 6 12
2 2 7 11
3 2 4 11
4 1 6 12 …Run Code Online (Sandbox Code Playgroud) 我希望有人可以在这里帮助我的语法.我有两个表ansicache..encounters和ansicache..x_refclaim_Table
该encounters表有一encounter列与patacctnumber列中的列匹配x_refclaim_table.
但是,有时patacctnumber可以在x_refclaim_table不同的服务日期(列iar_servicedate)中显示两次.
我想更新encounters表,admitted列的最大值iar_servicedate,其中encounter在encounters表= patacctnumber在x_refclaim表
update ansicache..ENCOUNTERS
set ADMITTED=max(IAR_ServiceDate)
from
(
ansicache..ENCOUNTERS e (nolock)
join
ansicache..x_refClaim_table x (nolock)
on e.ENCOUNTER=x.PatAcctNumber
)
Run Code Online (Sandbox Code Playgroud)
它仍然失败:
消息157,级别15,状态1,行1聚合可能不会出现在UPDATE语句的集合列表中.
我尝试过做一些其他的事情,比如声明一个ID,却无法让它工作.
假设我使用以下语句生成了一个向量:
x1 <- rep(4:1, sample(1:100,4))
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试使用以下命令计算出现次数
count(x1)
x freq
1 1 40
2 2 57
3 3 3
4 4 46
Run Code Online (Sandbox Code Playgroud)
要么
as.data.frame(table(x1))
x1 Freq
1 1 40
2 2 57
3 3 3
4 4 46
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,都不会保留发生的顺序.我想保留发生的顺序,即输出应该是这样的
x1 Freq
1 4 46
2 3 3
3 2 57
4 1 40
Run Code Online (Sandbox Code Playgroud)
最干净的方法是什么?另外,有没有办法强制执行特定订单?
这是一个基本问题,但我已经坚持了很长一段时间.我正在尝试对ColumnB中的值进行分组,但只在ColumnA中的每个值中进行分组.
初始数据框将类似于:
ColumnA = c(1,1,1,2,2,2)
ColumnB = c("f","g","g","f","f","h")
df <- data.frame(ColumnA,ColumnB)
Run Code Online (Sandbox Code Playgroud)
ColumnA ColumnB
1 f
1 g
1 g
2 f
2 f
2 h
Run Code Online (Sandbox Code Playgroud)
结果将是:
ColumnA ColumnB
1 f
1 g
2 f
2 h
Run Code Online (Sandbox Code Playgroud)
(我尝试使用的方法之一是dplyr使用:group_by(df, ColumnB),但尝试不成功.)
使用R,我即将计算分组方法aggregate(..., mean).然而,平均回报是错误的.
testdata <-read.table(text="
a b c d year
2 10 1 NA 1998
1 7 NA NA 1998
4 6 NA NA 1998
2 2 NA NA 1998
4 3 2 1 1998
2 6 NA NA 1998
3 NA NA NA 1998
2 7 NA 3 1998
1 8 NA 4 1998
2 7 2 5 1998
1 NA NA 4 1998
2 5 NA 6 1998
2 4 NA NA 1998
3 11 2 7 …Run Code Online (Sandbox Code Playgroud) aggregate ×10
r ×5
sql ×4
postgresql ×2
count ×1
django ×1
max ×1
mean ×1
select ×1
sql-server ×1