【发布时间】:2021-09-10 23:04:48
【问题描述】:
我在汇总/汇总查询(子查询?)的输出时遇到问题。这是我的初始代码和输出:
代码:
SET ARITHABORT OFF
SET ANSI_WARNINGS OFF
SELECT
AsOfDate,
round(ColA/sum(ColB) * (ColC),4) As 'Monthly_Return'
from xyz.abc
WHERE
AsOfDate BETWEEN '2021-05-25' AND '2021-05-26'
and ColD like '123%'
GROUP BY AsOfDate, ColA,ColB,ColC
| AsOfDate |MarketV(ColA)|MarketV(ColB)|Return(ColC)|(ColD)|
|------------|-------------|-------------|------------|------|
| 2021-05-25 | 8891171.14| 8891171.14| -0.81166911| 123|
| 2021-05-25 | 14219713.92| 14219713.92| 2.12135625| 123|
| 2021-05-25 | 3102248.42| 3102248.42| 0.36907554| 123|
| 2021-05-26 | 8819004.25| 8819004.25| 0.88822511| 123|
| 2021-05-26 | 14521364.71| 14521364.71| 1.84104756| 123|
| 2021-05-26 | 3113698.06| 3113698.06| 0.44211577| 123|
|The sum of ColB for 2021-05-25 is 26,213,133.48|
|The sum of ColB for 2021-05-25 is 26,454,067.02|
我想要按日期分组的 ColAi/ColB * ColCi 的总和。
|For 2021-05-25 | Return |
|--------------------------------------------|---------|
|8891171.14 / 26,213,133.48 * -0.81166911 =|-0.275308|
|14219713.92 / 26,213,133.48 * 2.12135625 =|1.150762 |
|3102248.42 / 26,213,133.48 * 0.36907554 =|0.043679 |
|For 2021-05-26 | Return |
|--------------------------------------------|---------|
|8819004.25 / 26,454,067.02 * 0.88822511 =|0.296108 |
|14521364.71 / 26,454,067.02 * 1.84104756 =|1.0106016|
|3113698.06 / 26,454,067.02 * 0.44211577 =|0.0520379|
我当前的代码显示以下输出:
| AsOfDate | Monthly_Return |
|---|---|
| 2021-05-25 | -0.275308 |
| 2021-05-25 | 1.150762 |
| 2021-05-25 | 0.043679 |
| 2021-05-26 | 0.296108 |
| 2021-05-26 | 1.0106016 |
| 2021-05-26 | 0.0520379 |
我真正想要的是:
| AsOfDate | Monthly_Return |
|---|---|
| 2021-05-25 | 0.9191 |
| 2021-05-26 | 1.3587 |
【问题讨论】:
-
提示:
GROUP BY AsOfDate或GROUP BY AsOfDate, ColumnA。 -
sum(ColumnB)在您心中代表什么?请提供示例数据和所需的输出。 -
sum(ColumnB) 是按日期在 columnB 中所有值的总和
-
您使用的是什么 DBMS? SQL 请求应始终使用相关 DBMS 进行标记。
As 'Monthly_Return'根据实例的 SQL 标准是无效的,因为单引号是为字符串文字保留的,而不是为名称保留的。AsOfDate BETWEEN '2021-05-25' AND '2021-05-26'在某些 DBMS 中可能会失败,因为您在这里使用的是字符串文字而不是日期文字。 -
那么
Monthly_Return是SUM(ColumnB)[过滤后的] 查询结果还是整个表的一部分?
标签: sql sql-server aggregate-functions