用于计算特定组平均值的SQL查询

时间:2018-01-26 14:09:11

标签: tsql

我将尝试使用此示例表解释我的问题:

enter image description here

我需要计算高值和低值的平均值来生成'mid'值,但前提是它不在表中。

分组是获得所有中间价值的良好开端。但是,如何避免覆盖现有的中间值?如何将所有其他数据包含在视图中?

2 个答案:

答案 0 :(得分:0)

为什么不在下面?

select KeyType,Avg(Value) from mytable group by KeyType

答案 1 :(得分:0)

这是一个开始:

select Key_Name, Key_Date, Key_ID1, Key_Type, Value, Key_Module from T
union all /* all isn't strictly necessary though generally faster */    
select
    Key_Name, Key_Date, 'mid' as Key_Type,
    min(Key_ID1) as Key_ID1 -- ??
    avg(Value), -- (max(Value) - min(Value)) / 2.0
    min(Key_Module) as Key_Module
from T
group by Key_Name, Key_Date
having count(case when KeyType = 'mid' then 1 end) = 0

使用Key_ModuleKey_ID1列并不清楚您打算做什么。