sql - 使用 GROUP BY 在计算列上聚合 SUM

标签 sql database ms-access

我之前尝试过问这个问题,现在我找到了一种更统一的方式来问这个问题。

我正在使用 Access 2007。

我在 Access 中有以下格式的查询:

SELECT RecDate, Weight * YTD / (SELECT SUM(Weight) From Records 
WHERE Class1=t2.Class1 AND Class2 = t2.Class2) as AdjYield
From Records as t2
WHERE Class1="fi" AND Class2="ra"

它给了我以下结果

RecDate AdjYield
11/27/2012  4.73704622309864E-05
11/27/2012  0
11/27/2012  -1.87533613791046E-04
11/27/2012  -2.4014644030909E-05
11/27/2012  1.29986083977377E-04
11/27/2012  1.2765190817936E-04
12/11/2012  1.10288780895771E-04
12/11/2012  0
12/11/2012  -1.7463943470934E-04
12/11/2012  -1.51778890534467E-05
12/11/2012  1.47374111584102E-04
12/11/2012  1.45120288096115E-04

现在我想要每天计算的 AdjYield 的总和

RecDate AdJYield
11/27/2012, 1.557E-05
12/11/2012, 3.549E-05

我尝试将 SUM() 放在 Weight * YTD/(SELECT SUM(Weight) From Records WHERE Class1=t2.Class1 AND Class2 = t2.Class2) 作为 AdjYield 部分,然后添加 GROUP BY RecDate 最后。但是我收到一条错误消息

You tried to execute a query that does not include the specified expression "Class1" as part of an aggregate function.

知道如何正确进行此聚合吗?

最佳答案

将现有查询用作另一个GROUP BY RecDate的子查询。

SELECT sub.RecDate, Sum(sub.AdjYield) AS SumOfAdjYield
FROM
    (
        SELECT RecDate, Weight * YTD / (SELECT SUM(Weight) From Records 
        WHERE Class1=t2.Class1 AND Class2 = t2.Class2) as AdjYield
        From Records as t2
        WHERE Class1="fi" AND Class2="ra"
    ) AS sub
GROUP BY sub.RecDate;

关于sql - 使用 GROUP BY 在计算列上聚合 SUM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19408625/

相关文章:

mongodb - 为什么 mongodb 的成员不断恢复?

ms-access - 如何在 Access 2007 中将窗体中的对象自动居中?

mysql - 基于多个表更新单个表 - 似乎适用于 MySql 而不是 ACCESS 2003

mysql - 在 View 中对项目编号进行排名,MYSQL

sql - 雪花中的日期转换为年月

sql - 这是在关系数据库中对地址信息建模的好方法吗?

database - 具有链接到同一个表的两个子表单的 MS Access 表单

java - 如何创建一个更新查询来更改带有 sysdate 的字段值?

php - 切换到 PDO 后网页内容不显示

sql - 数据库设计 - 实体属性值 (EAV) 的替代方案