Você está na página 1de 9

BD II - TADS

BD II - TADS

A expressão CASE do SQL é uma expressão condicional


genérica, semelhante as declarações if/else de outras
linguagens:

CASE WHEN condição THEN resultado


[WHEN ...]
[ELSE resultado]
END
BD II - TADS

A cláusula CASE pode ser usada em qualquer lugar onde uma


expressão for válida. A condição é uma expressão que retorna
um resultado boolean. Se o resultado for verdade, então o valor
da expressão CASE é o resultado que segue a condição. Se o
resultado for falso, todas as cláusulas WHEN seguintes são
analisadas da mesma maneira. Se o resultado de nenhuma
condição WHEN for verdade, então o valor da expressão CASE
é o valor do resultado na cláusula ELSE. Se a cláusula ELSE for
omitida, e nenhuma condição for satisfeita, o resultado será nulo.
BD II - TADS

CREATE TABLE teste (


a INTEGER
);

INSERT INTO teste VALUES(1);


INSERT INTO teste VALUES(2);
INSERT INTO teste VALUES(3);
BD II - TADS

SELECT * FROM teste;

SELECT a,
CASE WHEN a=1 THEN 'um'
WHEN a=2 THEN 'dois'
ELSE 'outro'
END AS caso
FROM teste;

ou

SELECT a,
CASE a WHEN 1 THEN 'um'
WHEN 2 THEN 'dois'
ELSE 'outro'
END AS caso
FROM teste;
BD II - TADS

CREATE TABLE notas (


nota decimal(4,2)
);

INSERT INTO notas VALUES(10);


INSERT INTO notas VALUES(9.2);
INSERT INTO notas VALUES(9.0);
INSERT INTO notas VALUES(8.3);
INSERT INTO notas VALUES(7.7);
INSERT INTO notas VALUES(7.4);
INSERT INTO notas VALUES(6.4);
INSERT INTO notas VALUES(5.8);
INSERT INTO notas VALUES(5.1);
INSERT INTO notas VALUES(5.0);
INSERT INTO notas VALUES(0);
BD II - TADS

SELECT nota,
(SELECT MIN(nota) FROM notas) AS menor,
(SELECT MAX(nota) FROM notas) AS maior,
(SELECT AVG(nota) FROM notas) AS media
FROM notas;
BD II - TADS

SELECT COUNT(CASE WHEN nota BETWEEN 9.00 AND


10.00 THEN 1 ELSE NULL END) AS A,
COUNT(CASE WHEN nota BETWEEN 7.00 AND 8.99 THEN
1 ELSE NULL END) AS B,
COUNT(CASE WHEN nota BETWEEN 5.00 AND 6.99 THEN
1 ELSE NULL END) AS C,
COUNT(CASE WHEN nota BETWEEN 3.00 AND 4.99 THEN
1 ELSE NULL END) AS D,
COUNT(CASE WHEN nota BETWEEN 0.00 AND 2.99 THEN
1 ELSE NULL END) AS E
FROM notas;
BD II - TADS

SELECT CASE
WHEN nota < 3 THEN 'E'
WHEN nota < 5 THEN 'D'
WHEN nota < 7 THEN 'C'
WHEN nota < 9 THEN 'B'
ELSE 'A'
END AS conceito,
COUNT(*) AS quantidade,
MIN(nota) AS menor,
MAX(nota) AS maior,
AVG(nota) AS media
FROM notas
GROUP BY CASE
WHEN nota < 3 THEN 'E'
WHEN nota < 5 THEN 'D'
WHEN nota < 7 THEN 'C'
WHEN nota < 9 THEN 'B'
ELSE 'A'
END
ORDER BY conceito;

Você também pode gostar