SóProvas


ID
770449
Banca
CESPE / CEBRASPE
Órgão
Banco da Amazônia
Ano
2012
Provas
Disciplina
Banco de Dados
Assuntos

A execução da consulta SQL SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula; terá como resultado apenas as duas primeiras linhas dos empregados ordenados por matrícula de forma decrescente

Alternativas
Comentários
  • Para obter o resultado especificado na questão, a consulta teria que ser a seguinte:
    SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula DESC

    O (
    SELECT * FROM empregado ORDER BY matricula DESC) de fato ordena os empregados por ordem decrescente, mas o  ORDER BY matricula externo ordena o resultado final de forma crescente (ASC), que é a padrão se nada for especificado. Portanto, eu humildemente considero o gabarito errado. Marquei E.
  • A análise não está incorreta. De fato, o ORDER BY externo vai se sobrepor e a saída final estará em ordem crescente. O que pega na questão é o português. "terá como resultado apenas as duas primeiras linhas dos empregados ordenados por matrícula de forma decrescente" significa que o resultado são as duas primeiras linhas da tabela resultante dos empregados ordenados por matrícula de forma decrescente. Um exemplo:
    Empregado tem valores {1,2,3}.
    SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula; : {3,2,1}
    SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula : {3,2}
    SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula : {2,3}
    A saída seria {2,3}, que são as duas primeiras linhas dos empregados ordenados de forma desc {3,2,1}, em ordem asc. Meio embolado, eu errei a questão, mas creio que o gabarito não mude.
  • Foi a pegadinha mais malvada que eu já vi rs

    Realmnente, se tivesse uma vírgula logo depois de "empregados", a questão estaria Incorreta.

  • pense numa pegadinha fdp => apresento-lhes essa questão

    A execução da consulta SQL SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula; terá como resultado apenas as duas primeiras linhas dos empregados ordenados por matrícula de forma decrescente (CERTO)

    A execução da consulta SQL SELECT * FROM (SELECT * FROM empregado ORDER BY matricula DESC) WHERE ROWNUM <= 2 ORDER BY matricula; terá como resultado apenas as duas primeiras linhas dos empregados, ordenados por matrícula de forma decrescente (ERRADO)