具有唯一值的列的 SQL 总和量
Posted
技术标签:
【中文标题】具有唯一值的列的 SQL 总和量【英文标题】:SQL Sum amount for column with unique values 【发布时间】:2021-03-05 05:26:50 【问题描述】:更新
意识到我做得对。我遇到问题的原因是因为我没有意识到我的 Col1 数据并不像预期的那样,有一些 Col1 与多个 Col0 相关联(它应该是 Col1:Col0 1:1 关系。这就是为什么混淆其中一个没有按预期工作。
原始问题
我正在使用 SQL 查询对其中一列中不同值的总收入求和,并返回一个与其他属性组合的表。
这是我的桌子:
Col 0 Col1 Col2(unique) Revenue
X 1 A 10
X 1 B 20
X 1 C 0
X 2 D 5
X 2 E 8
Y 3 F 3
Y 3 G 0
Y 3 H 50
期望的输出:
Col0 Col1 Revenue
X 1 30
X 2 13
Y 3 53
我试过了:
WITH
rev_calc AS (
SELECT
Col0,
Col1,
Col2, ##this is for further steps to combine other tables for mapping after this
SUM(Revenue) AS total_revenue, ##total rev by Col1
FROM table_input
GROUP BY Col1, Col0, Col2 ##Have to group by Col0 and Col2 too as it raised error because of 'list expression'
)
SELECT DISTINCT
table2.mappedOfCol0,
rev_calc.Col1,
rev_calc.Col2,
rev_calc.total_revenue,
FROM another_table AS table2
LEFT JOIN rev_calc
ON rev_calc.Col0 = table2.mappedOfCol0
但是在特定的 Col1 下获得多行收入的实际输出。
例如,当我在输出表中按 Col1 = 1 过滤时,我仍然得到一个不同收入金额的列表:
Col1 total_revenue
1 10
1 20
1 0
我认为GROUP BY
应该将收入汇总到 Col1 下。我在这里错过了什么?我也尝试先查询FROM (SELECT DISTINCT Col1....)
方式,但总和(收入)也会产生不同收入的列表
这里是 SQL 的新手,如果有人可以在这里分享任何见解,不胜感激。谢谢。
【问题讨论】:
这能回答你的问题吗? Using group by on multiple columns 谢谢哈桑,正如问题中提到的,我试图使用 GROUP BY,但我的问题是即使我使用 GROUP BY 查询,输出仍然给我 Col1 的多个收入金额跨度> @unacom 您想要的输出将由 GMB 答案显示 【参考方案1】:你不想聚合吗?
select col0, col1, sum(revenue) as revenue
from mytable
group by col0, col1
我不明白您要在查询中使用 col2
做什么。这将为您显示的数据生成您想要的结果,其中包含一个表。
【讨论】:
感谢@GMB!所以我仍然需要 col2 在与另一个组合时使用最终结果。桌子。我需要参考,即了解对于每个 Col0,与其关联的 Col1 和 Col2 的值列表。是的,我想要聚合,但我不明白为什么我的聚合在我的查询中不起作用。如果我的查询中不包含 Col2,则在查询的第二部分组合时,我将无法选择它们以在我的输出表中生成【参考方案2】:根据您提供的解释,我认为您的要求是根据 Col2 值映射到另一个表的选择性记录的总收入。如果是这种情况,那么您可以尝试以下查询。
WITH
rev_calc AS (
SELECT
distinct(Col2) as Col2
From table_input
LEFT JOIN another_table
ON another_table.Col2 = table_input.Col2
)
SELECT
Col0,
Col1,
SUM(Revenue) AS total_revenue
FROM table_input
WHERE Col2 in (select Col2 from rev_calc)
GROUP BY Col0, Col1;
【讨论】:
感谢 Nilesh 的建议!我完全遵循并意识到您和 GMB 的方式都有效。我遇到问题的原因是因为我没有意识到我的 Col1 数据并不像预期的那样,有一些 Col1 与多个 Col0 相关联(它应该是 Col1:Col0 1:1 关系。这就是为什么混淆它没有按预期工作。谢谢!以上是关于具有唯一值的列的 SQL 总和量的主要内容,如果未能解决你的问题,请参考以下文章