Pular para o conteúdo principal

Questão de Banco de Dados — Banco de Dados Relacionais — CESGRANRIO 2012

Banco de DadosBanco de Dados Relacionais
Código
cg046452
Banca
CESGRANRIO
Órgão
CMB
Ano
2012
Nível
Superior
Cargo
Analista - Desenvolvimento de Sistemas
Considere um Gerenciador de Bancos de Dados Relacional que armazena uma base de dados sobre atendimentos médicos.A tabela CONSULTAS, armazenada nessa base de dados, é composta pelas colunas MATRICULA_MEDICO, MATRICULA_PACIENTE e DATA (as três colunas compõem a chave-primária da tabela).A figura a seguir apresenta um exemplo de conteúdo para a tabela CONSULTAS.imagem-003.jpgO comando SQL que seleciona a matrícula de cada paciente e a matrícula do(s) médico(s) que mais vezes atendeu(ram) tal paciente é
  1. ASELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO HAVING COUNT(*) = (SELECT MAX(QTD) FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA)
  2. BSELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, MAX(QTD) AS QTD FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA2
  3. CSELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA WHERE NOT EXISTS (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA2 WHERE LISTA2.MATRICULA_PACIENTE = LISTA.MATRICULA_PACIENTE AND LISTA2.QTD > LISTA.QTD)
  4. DSELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO HAVING COUNT(*) = MAX(COUNT(*))
  5. ESELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA ORDER BY QTD DESC
Revelar gabarito e comentário

GabaritoC — SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA WHERE NOT EXISTS (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM (SELECT MATRICULA_PACIENTE, MATRICULA_MEDICO, COUNT(*) AS QTD FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO) LISTA2 WHERE LISTA2.MATRICULA_PACIENTE = LISTA.MATRICULA_PACIENTE AND LISTA2.QTD > LISTA.QTD)

Link permanente: /questoes/cg046452