Re: Mathematical operations with NULL values

Поиск
Список
Период
Сортировка
От Richard Huxton
Тема Re: Mathematical operations with NULL values
Дата
Msg-id 416FA50A.7030900@archonet.com
обсуждение исходный текст
Ответ на Mathematical operations with NULL values  (Alexander Pucher <pucher@atlas.gis.univie.ac.at>)
Список pgsql-general
Alexander Pucher wrote:
> Hi,
>
> given a table with some data, e.g. some monthly measures. Some of the
> measures are missing though.
>
>
> id   m1   m2   m3   m4   m5   ....   m12
> ----------------------------------------------
>
> 1    23    45    66    76    76    ....    12 2    76    NULL    77
> 88   77   ...    89
> 3    67   87   98   NULL   78   ...   NULL
>
> I would like the calculate the yearly average of each row, something
> like ((m1+m2+m3+m4+m5+...m12)/12). This would work if I had all montly
> values for one year. In the case of at least one NULL value involved, I
> would get NULL as result.
>
> So instead of dividing each year by 12, I would have to divide by the
> number of measures available in each row.

The "correct answer" is to structure your data differently. If you had a
table:
   measures (id, month_num, measurement)
you could then use:
   SELECT id, AVG(measurement) FROM measures GROUP BY id
You don't even need nulls any more, just don't record values for those
months you don't know about.

If you can't restructure your table, you'll need to write a procedure
that checks each value in turn for null-ness and calculates accordingly.

--
   Richard Huxton
   Archonet Ltd

В списке pgsql-general по дате отправления:

Предыдущее
От: Oleg Bartunov
Дата:
Сообщение: Re: Tsearch2 trigger firing...
Следующее
От: "Najib Abi Fadel"
Дата:
Сообщение: Re: Mathematical operations with NULL values