Sql server Sql;从同一列中选择平均值和一个值

Sql server Sql;从同一列中选择平均值和一个值,sql-server,select,average,Sql Server,Select,Average,如何将同一列中的平均值和另一个值放入新表中的两个不同列中 我有这个: Person_ID col2 col3_values 1 101010A 20000 1 101010B 30000 2 101010A 25000 2 101010B 30000 3 101010A 22000 3 101010B 24000 我想要一个

如何将同一列中的平均值和另一个值放入新表中的两个不同列中

我有这个:

Person_ID col2         col3_values
1         101010A      20000
1         101010B      30000
2         101010A      25000
2         101010B      30000
3         101010A      22000
3         101010B      24000
我想要一个表,该表将col1_ID(1,2,3)中ID:s的col3_值平均,然后将该平均值与保存col1_ID:value的列进行比较,如下所示:

col2        AVG(value personID_1-3)  Value PersonID_1
101010 A    22333                    20000
101010 B    28000                    30000

我尝试了很多代码,但都没有成功。有人能帮我吗?如果这能起作用,我将非常感激,如果我能得到第四列,它可以显示averagecolumn和第三列之间的差异,第三列保存ID_1:s值。

有很多方法可以做到这一点,其中之一就是使用
外部应用
结构:

select 
    col2, 
    AVG(t.col3_values) as "AVG(value personID_1-3)", 
    a.col3_values as "Value PersonID_1",
    AVG(t.col3_values) - a.col3_values as "Difference"
from your_table t 
outer apply (
    select col3_values from your_table  where Person_ID = 1 and t.col2 = col2
) a
group by col2, a.col3_values
或者可以使用相关子查询:

select 
    col2, 
    AVG(t.col3_values) as "AVG(value personID_1-3)", 
    (
      select col3_values from your_table where Person_ID = 1 and t.col2 = col2
    ) as "Value PersonID_1"
from your_table t 
group by col2
样本输出:

Query 1:
col2                 AVG(value personID_1-3) Value PersonID_1 Difference
-------------------- ----------------------- ---------------- -----------
101010A              22333                   20000            2333
101010B              28000                   30000            -2000


Query 2:    
col2                 AVG(value personID_1-3) Value PersonID_1
-------------------- ----------------------- ----------------
101010A              22333                   20000
101010B              28000                   30000

我认为你没有提供足够的关于如何计算这些值的信息。我试过了,但没有弄清楚第三列的意义。第三列(值PersonID_1)来自第一列I中的Person_ID=1。第一个表中101010A=20000和101010B=30000。101010A(20000+25000+22000)/3和101010B(30000+30000+24000)/3的平均值为PersonID1-3