ďťż
 
[firebird] Średnia z kilku kolumn ďťż
 
[firebird] Średnia z kilku kolumn
Zobacz wiadomości
 
Cytat
A gdyby tak się wedrzeć na umysłów górę, / Gdyby stanąć na ludzkich myśli piramidzie, / I przebić czołem przesądów chmurę, / I być najwyższą myślą wcieloną. . . Juliusz Słowacki, Kordian
Indeks BCB i MySQL subiekt gt fototapeta
 
  Witamy

[firebird] Średnia z kilku kolumn



punto - 03-12-2005 15:51
[firebird] Średnia z kilku kolumn
  Witam
Mam taki problem. Jest tabela:
id
col1
col2
col3
col4
Teraz col4 ma zawierać średną z col1+col2+col3, jednak może być tak, że
któraś z kolumn będzie NULL. Jak z tego wybrnąć i jak najlepiej to
zaimplementować? Dużo szukałem na ten temat, kombinuję z COALESCE ale jakoś
zupełnie mi nie wychodzi :(





Bartek Dajewski - 09-12-2005 19:53

  Cześć.

Użytkownik "punto" <puntoWYWALTO@down.pl> napisał w wiadomości
news:dmrvqn$9ib$1@atena.e-wro.net...
> Witam
> Mam taki problem. Jest tabela:
> id
> col1
> col2
> col3
> col4
> Teraz col4 ma zawierać średną z col1+col2+col3, jednak może być tak, że
> któraś z kolumn będzie NULL. Jak z tego wybrnąć i jak najlepiej to
> zaimplementować? Dużo szukałem na ten temat, kombinuję z COALESCE ale
jakoś
> zupełnie mi nie wychodzi :(

To zależy jak chcesz traktować Null. Czy np. srednia(null, null, 3) jes
równa 3 czy 1?

select id, col1, col2, col3, case when col1 is null and col2 is null and
col3 is null then null
else (coalesce(col1, 0)+coalesce(col2, 0)+coalesce(col3, 0))/
(case when col1 is null then 0 else 1 end +
case when col2 is null then 0 else 1 end +
case when col3 is null then 0 else 1 end)
end srednia
from tabela

lub

select id, col1, col2, col3, case when col1 is null and col2 is null and
col3 is null then null
else (coalesce(col1, 0)+coalesce(col2, 0)+coalesce(col3, 0))/3
end srednia
from tabela

Możesz też zbudować widok, który zwróci id i wszystkie wartości col1...col3
jedną pod drugą: (w jednej kolumnie):

select id, col1
union all select id, col2
union all select id, col3

.... i na tym widoku zastosować

select id, avg(kolumna)
from widok
group by id

ale to chyba źle się odbije na wydajności.
--
Pozdrawiam :-)
Bartek
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • effulla.pev.pl
  • comp
    Firebird - zmiana NULL na NOT NULL [firebird] Czym =?ISO-8859-2?Q?zast=B1pi=E6_postgresowy_inte?==?ISO-8859-2?Q?rval_=3F?= Insert do tabeli danymi z innej tabeli Firebird Insert do tabeli z danych innej tabeli plus dodatkowa wartośćpola (Firebird) Jak =?ISO-8859-2?Q?zamieni=E6_dwa_pola_jednej_kolumny_?==?ISO-8859-2?Q?w_dw=F3ch_rekordach_za_pomoc=B1_jednego_zapyt? ==?ISO-8859-2?Q?ania=3F?= firebird - dostep do roznych baz na podstawie nazwy usera,hasla i adresu IP [mysql] =?ISO-8859-2?Q?po=B3=B1czenie_tabel_wg_kolumn=2C_?==?ISO-8859-2?Q?nie_wierszy?= ms sql server - =?ISO-8859-2?Q?domy=B6lny_format_kolumn_ty?==?ISO-8859-2?Q?pu_datetime?= [ORACLE] Dodanie kolumny typu BLOB - =?ISO-8859-2?Q?wp=B3yw_na?==?ISO-8859-2?Q?_wydajno=B6c?= =?iso-8859-2?q?Konfiguracja_Firebirda_pod_k=B1tem_wykorzystan ia_pami=EAci?=
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • shutter.opx.pl
  • Cytat

    Decede mihi sole - nie zasłaniaj mi słonca.
    Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści
    Hoc fac - tak czyń.
    A tergo - od tyłu; z tyłu.
    I czarne włosy posiwieją. Safona

    Valid HTML 4.01 Transitional

    Free website template provided by freeweblooks.com