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.
O 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 é
O 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 é- 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)
- 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
- 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)
- DSELECT MATRICULA_PACIENTE, MATRICULA_MEDICO FROM CONSULTAS GROUP BY MATRICULA_PACIENTE, MATRICULA_MEDICO HAVING COUNT(*) = MAX(COUNT(*))
- 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