As funções GREATEST e LEAST recuperam, respectivamente, o maior e o menor valor não nulo em uma lista de valores, caso existam. São bastante úteis e, embora não sejam parte do padrão sql, são compatíveis com funções similares fornecidas por outros SGBDs.
Saliento que para recuperar o maior e menor valores em colunas de uma tabela, devem ser utilizadas as funções de agregação MAX e MIN, respectivamente.
* Exemplos
1 - Exemplo básico
SELECT GREATEST(1,2);
2 - Exemplo básico com três parâmetros
SELECT GREATEST(1,2, 3, 4);
3 - Exemplo básico com datas
SELECT GREATEST(current_date,current_date + 10);
4 - Exemplo básico com cálculo simples
SELECT GREATEST(1*2,2*1);
5 - Exemplo com valor nulo ignora o nulo
SELECT GREATEST(10,11,null);
6
- Exemplo gerando valor nulo
SELECT GREATEST(null,null);
7- Exemplo com dados textuais
SELECT GREATEST('ANA','CLA','AVA');
8 - Exemplo com timestamps
SELECT GREATEST(timestamp '2014-04-02 14:30:00', timestamp '2014-04-02 14:30:01');
9 - Exemplos do uso de LEAST
SELECT LEAST(1,2, 3, 4);
SELECT LEAST(current_date,current_date + 10);
SELECT LEAST(1*2,2*1);
SELECT LEAST(10, 11, null);
SELECT LEAST('ANA','CLA','AVA');
SELECT LEAST(timestamp '2014-04-02 14:30:00', timestamp '2014-04-02 14:30:01');
10 - Exemplo de comparação entre campos de uma mesma tabela
CREATE TEMP TABLE NOTA (codigo REAL, nota1 REAL, nota2 REAL, nota3 REAL);
INSERT INTO NOTA VALUES (1,10,9,8);
INSERT INTO NOTA VALUES (2,9.5,8,8.5);
INSERT INTO NOTA VALUES (3,1,2,3);
SELECT codigo, GREATEST(nota1, nota2, nota3) AS MAIOR_NOTA, LEAST(nota1, nota2, nota3) AS MENOR_NOTA FROM NOTA;