SQL查询以获取平均值之和

时间:2020-06-18 12:17:07

标签: sql

需要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)

5 个答案:

答案 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