у меня есть данные в следующем форматеагрегатной функции, чтобы сохранить определенное значение, в зависимости от других столбцов
id_A id_B val -------------------------------- 1 1 1 1 2 2 2 1 3 2 3 4
Есть хороший способ группы id_A, сохраняя при этом значения строки, в которой id_A = Id_B?
Причина, по которой мне нужно агрегировать, заключается в том, что если такой линии нет, я хочу средний.
Результат должен выглядеть следующим образом:
id_A val ----------------- 1 1 2 3.5
Я придумал следующем, но это дело выглядит некрасиво и Hacky ко мне.
Select id_A,
Coalesce(
avg(case when id_A = id_B then val else null end),
avg(val)
) as value
From myTable
Group by id_A;
Ваш запрос выглядит хорошо для меня, и я upvoted вас за усилия. –
Какую версию postgres вы используете? –
Я использую postgres 8.3, но спасибо за ваш ответ в любом случае. – Atn