У меня есть SQL, как:оракул добавления, а затем в среднем с нулевым
select avg(decode(type, 'A', value, null) + decode(type, 'B', value, null)) from table;
Проблема с этим некоторые из этих типов может быть нулевой, так что добавление часть приведет к нулевой, потому что добавление ничего нуль делает ноль. Таким образом, вы можете подумать, что я могу изменить декодирование от нуля до 0, но похоже, что avg() считает это частью его усреднения, но это не должно/я не хочу, чтобы он считался частью среднего.
В идеале добавление просто игнорирует нули и просто не пытается добавить их к остальным значениям.
Так скажем, мои цифры:
5 + 6 + 5
3 + 2 + 1
4 + null + 2
Они всего 28, и я хотел бы разделить на 8 (игнорировать нуль), но если изменить нулевое значение 0 в декодировании, в СРЕДНЕМ затем разделится на 9, что не то, что я хочу.
Кажется, что я не получаю то же значение, что и исходный запрос, который я перерабатываю. Оригинал будет сам присоединяться к себе для каждого другого типа, тогда они будут avg (a.value + b.value + c.значение), но самосоединение убивает производительность. В основном все, что они пытались сделать, это поворот таблицы по типу, поэтому я использую декодирование для всех остальных столбцов, и она отлично работает, но это дополнение перед тем, как avg() дает мне проблемы. – user441521
Редактировать сообщение своим полным запросом, потому что ему не хватает информации. –
На самом деле это не так. Единственное, что мне не хватает, это столбец даты и столбец имен. Таблица - дата/имя/тип/значение, и я поворачиваю по типу и усредняет значения, но мне нужно суммировать их до их поворота. Предположим, что типы - это продукты, а ценности - это ежедневные цены. Затем скажите, что я хочу добавить все типы цитрусовых, а затем avg them. Это в основном идея. – user441521