需要SQL查询才能获得以下结果
考虑表
Column1 || Column2 || Column3
H1 A1 10
H1 A1 10
H1 A2 30
H1 A2 30
H1 A2 30
我想查询以找到Column1的总和作为column2的平均值
示例
Column1 || Column 3
H1 40 (Average of A1 + A2 i.e (10 + 30)
答案 0 :(得分:3)
SELECT column1, SUM(Avg_col3) AS total
FROM (
SELECT column1, column2, AVG(column3) AS avg_col3
FROM t
GROUP BY column1, column2
) A
GROUP BY column1;
答案 1 :(得分:1)
您可以通过两种汇总来做到这一点:
SELECT Column1, SUM(Column3Avg) AS Column3
FROM
(
SELECT Column1, Column2, AVG(Column3) AS Column3Avg
FROM yourTable
GROUP BY Column1, Column2
) t
GROUP BY
Column1;
此方法首先按第一列和第二列进行汇总,以产生如下所示的中间结果:
Column1 | Column2 | Column3Avg
H1 | A1 | 10
H1 | A2 | 30
然后,我们仅通过第一列对上述内容进行汇总,然后对第3列的平均值求和。
答案 2 :(得分:0)
如果数字重复这样,您的数据模型看起来真的很混乱。我建议:
select column1, sum(column3)
from (select distinct column1, column2, column3
from t
) t
group by column1;
答案 3 :(得分:0)
对于SQL Server
,请使用以下查询来获得所需的结果。
WITH CTE AS (
SELECT Column1,
AVG(Column3) AS Column3
FROM Table1
GROUP BY Column1, Column2
)
SELECT Column1, SUM(Column3) AS Column3
FROM CTE
GROUP BY Column1
答案 4 :(得分:0)
请运行以下代码。您将得到结果。
Select *
into #tmp
from (
select 'h1' as Column1, 'A1' as Column2, 10 as Column3
union all
select 'h1' as Column1, 'A1' as Column2, 10 as Column3
union all
select 'h1' as Column1, 'A2' as Column2, 30 as Column3
union all
select 'h1' as Column1, 'A2' as Column2, 30 as Column3
union all
select 'h1' as Column1, 'A2' as Column2, 30 as Column3
)r
select * from #tmp
Select r.Column1, sum(r.Column3) Column3
from (
select Column1, Column2, avg(Column3) Column3
from #tmp
group by Column1, Column2
)r
group by r.Column1