A feladat: Válasszuk ki három attribútum közül a legkisebbet.
A hivatalos megoldás:
select least(ero1, ero2, ero3) from tabla
Hallgatói megoldás (New professional
szint):
SELECT lancnev CASE WHEN (ero1<ero2) AND (ero1<ero3) THEN Ero1 WHEN (ero2<ero1) AND (ero2<ero3) THEN Ero2 ELSE Ero3 END FROM tabla
Egy másik brute-force megoldás (Seasoned professional
szint):
SELECT ERO1 AS ERO FROM ABCDEF.LANC WHERE ERO1<ERO2 AND ERO1<ERO3 UNION SELECT ERO2 AS ERO FROM ABCDEF.LANC WHERE ERO2<ERO1 AND ERO2<ERO3 UNION SELECT ERO3 AS ERO FROM ABCDEF.LANC WHERE ERO3<ERO1 AND ERO3<ERO2
(Ez mellesleg nem is azt csinálja amit kéne de azért roppant kreatív
)
Harmadik megoldás, ez überel mindent (Master programmer
szint)
DECLARE CURSOR kurzor is SELECT ero1, ero2, ero3 FROM erotabla Akt_ero1 NUMBER(4); Akt_ero2 NUMBER(4); Akt_ero3 NUMBER(4); BEGIN OPEN kurzor; LOOP FETCH kurzor INTO Akt_ero1, Akt_ero2, Akt_ero3; EXIT WHEN kurzor%NOTFOUND; IF Akt_ero1<Akt_ero2 THEN IF Akt_ero1<Akt_ero3 THEN INSERT INTO ideiglenes VALUES (Akt_ero1); END IF; ELSE IF Akt_ero2<Akt_ero3 THEN INSERT INTO ideiglenes VALUES (Akt_ero2); END IF; ELSE INSERT INTO ideiglenes VALUES (Akt_ero3); END IF; COMMIT; END LOOP CLOSE kurzor; END;
(Az ötletet és a szintek megnevezését az Evolution of a Programmer gyűjteményből merítettem.)