Autor Zpráva
radozaj
Profil
Ahoj, v PgSQL sa mi vyskytol takýto zádrheľ:
Máme tabuľku 3 čísel a chcem vždy vypísať najväčšie z nich.
------------------
| a  |  b   | c  |
==================
| 98 |  100 | 34 |
------------------
| 12 | NULL | 10 |
------------------
| 12 |  8   | 10 |
------------------

Preto som použil niečo takéto:
SELECT a,b,c,
  (CASE WHEN a > b
    THEN (CASE WHEN a > c THEN a ELSE c END)
    ELSE (CASE WHEN b > c THEN b ELSE c END)
  END) AS najvacsi
FROM pokus;

To je však chybné, 2. riadok nie je správny:
-----------------------------
| a  |  b   | c  | najvacsi |
=============================
| 98 |  100 | 34 |   100    |
-----------------------------
| 12 | NULL | 10 |    10    |
-----------------------------
| 12 |  8   | 10 |    12    |
-----------------------------
Kajman_
Profil *
SELECT a,b,c, GREATEST(a,b,c) AS najvacsi FROM pokus
radozaj
Profil
Ale ta hodnota NULL robí problém aj funkcii least :(
Tiež to robí rovnako zle...

EDIT: Vďaka, táto funkcia už funguje... :)
A prečo ten môj SELECT vlastne neide? Je to spôsobené tou hodnotou NULL ?
Kajman_
Profil *
Protože
12 > null vrátí false
null > 10 vrátí false
Toto téma je uzamčeno. Odpověď nelze zaslat.

0