Questão de Banco de Dados — Consultas e Comandos em SQL — INSTITUTO AOCP 2024
- Código
- qa630607
- Banca
- INSTITUTO AOCP
- Órgão
- DPE MS
- Ano
- 2024
- Cargo
- Ana Def ( )
- ASIGN()
- BSQRT()
- CCEIL()
- DFLOOR()
- ESUM()
GabaritoA — SIGN()
Gabarito: letra A. A função SIGN() é a única que, ao receber uma coluna numérica como parâmetro, retorna -1 para valores negativos, 1 para valores positivos e 0 para valor igual a zero — exatamente o comportamento descrito no enunciado. As demais alternativas (SQRT, CEIL, FLOOR, SUM) executam outras operações matemáticas, como veremos a seguir.
A linguagem SQL oferece um conjunto de funções numéricas que operam sobre valores individuais ou sobre colunas inteiras. A função SIGN() é uma função escalar (ou de linha) que devolve o sinal do número passado como argumento. Em termos matemáticos, ela implementa a função sinal, definida como:
SIGN(x) = -1 se x < 0;
SIGN(x) = 0 se x = 0;
SIGN(x) = 1 se x > 0.
Essa função é útil, por exemplo, para classificar rapidamente valores em categorias (negativo, nulo, positivo) sem precisar de uma cláusula CASE.
As outras funções listadas pertencem a categorias diferentes:
SQRT() calcula a raiz quadrada de um número não negativo.
CEIL() e FLOOR() arredondam um número para o inteiro imediatamente superior ou inferior, respectivamente.
SUM() é uma função de agregação que soma os valores de uma coluna, retornando NULL se a coluna estiver vazia.
A pegadinha da banca está em confundir a função de sinal com funções de arredondamento ou com a função de agregação SUM. O candidato que não conhece SIGN() pode tentar associar o comportamento descrito a CEIL ou FLOOR, mas essas funções não retornam -1, 0 ou 1; elas retornam o próprio número arredondado. Já SUM soma valores e não tem relação com o sinal individual de cada registro.
Para fixar: a função SIGN() é a resposta direta para perguntas sobre o sinal de um número em SQL. Ela é amplamente suportada pelos principais SGBDs (Oracle, MySQL, PostgreSQL, SQL Server), com a mesma semântica.
A função SIGN() retorna exatamente o que o enunciado descreve: -1 para valores negativos, 1 para valores positivos e 0 para valor igual a zero. É a implementação SQL da função matemática sinal. Exemplo: SELECT SIGN(-5) retorna -1; SELECT SIGN(0) retorna 0; SELECT SIGN(7) retorna 1.
SQRT() calcula a raiz quadrada de um número. Ela não tem relação com o sinal do valor: SQRT(9) retorna 3, SQRT(0) retorna 0, e para números negativos retorna erro (ou NULL, dependendo do SGBD). Não retorna -1, 0 ou 1 conforme o sinal.
CEIL() arredonda um número para o menor inteiro maior ou igual ao valor. Por exemplo, CEIL(2.3) retorna 3, CEIL(-2.3) retorna -2. Não retorna -1, 0 ou 1 com base no sinal; retorna o próprio número arredondado.
FLOOR() arredonda um número para o maior inteiro menor ou igual ao valor. Por exemplo, FLOOR(2.7) retorna 2, FLOOR(-2.7) retorna -3. Assim como CEIL, não tem relação com o sinal do valor.
SUM() é uma função de agregação que soma todos os valores de uma coluna. Ela retorna a soma total, não o sinal de cada valor. Em uma tabela vazia, retorna NULL. Não se aplica ao comportamento descrito.
Gabarito: letra A
Link permanente: /questoes/qa630607