У меня есть эта таблица:
id | attr | val
1 'A' 1.2
1 'A' 2.4
1 'B' 2.4
1 'B' 0.5
2 'A' 0.8
2 'A' 1.6
2 'B' 1.8
2 'B' 2.0
Для каждого идентификатора я бы хотел усреднить значения avg(val)
для каждого общего атрибута.Я попробовал следующее:
select id,
case when count(case when attr = 'A' then 1 end) > 0
then round(avg(val),2) end A,
case when count(case when attr = 'B' then 1 end) > 0
then round(avg(val),2) end B,
case when count(case when attr = 'C' then 1 end) > 0
then round(avg(val),2) end C
from table where this = 'that'
group by id;
Pivot / AVG работает для первого атрибута, но затем другие атрибуты получают то же значение:
id | A | B
1 1.8 1.8
2 1.2 1.2
Затем я попробовал это, но каждый атрибутбыл выведен в новой строке:
select id,
case when attr = 'A' then round(avg(val),2) end A,
case when attr = 'B' then round(avg(val),2) end B,
case when attr = 'C' then round(avg(val),2) end C,
from table where this = 'that'
group by id, attr;