235 lines
4.3 KiB
MySQL
235 lines
4.3 KiB
MySQL
|
-- 2.1 Altere a coluna estado_civil da tabela pacientes para definir ‘S’ como valor
|
|||
|
-- padrão
|
|||
|
ALTER TABLE pacientes modify estado_civil CHAR(1) DEFAULT 'S';
|
|||
|
|
|||
|
-- 2.2-Remova o valor padrão que introduziu na alínea anterior.
|
|||
|
ALTER TABLE pacientes modify estado_civil CHAR(1);
|
|||
|
|
|||
|
-- 2.3-Altere a tabela dos seguros para remover a coluna com o estado ativo.
|
|||
|
ALTER TABLE seguros
|
|||
|
DROP COLUMN ativo;
|
|||
|
|
|||
|
-- 2.4-Adicione à tabela pacientes uma coluna para introduzir o Número de
|
|||
|
-- Identificação de Segurança Social (NISS).
|
|||
|
ALTER TABLE pacientes add NISS VARCHAR(20);
|
|||
|
|
|||
|
-- 2.5-Remova a coluna Número de Identificação de Segurança Social (NISS) da tabela
|
|||
|
-- pacientes.
|
|||
|
ALTER TABLE pacientes
|
|||
|
DROP COLUMN NISS;
|
|||
|
|
|||
|
-- 4.1-Liste todos os médicos que trabalham no Hospital Portucalense
|
|||
|
SELECT DISTINCT
|
|||
|
*
|
|||
|
FROM
|
|||
|
medicos m
|
|||
|
INNER JOIN funcionarios f
|
|||
|
WHERE
|
|||
|
f.dta_fim IS NULL;
|
|||
|
|
|||
|
-- 4.2-Liste o nome, o sexo e a data de nascimento dos pacientes do Hospital
|
|||
|
-- Portucalense.
|
|||
|
SELECT
|
|||
|
nome,
|
|||
|
sexo,
|
|||
|
dta_nascimento
|
|||
|
FROM
|
|||
|
pacientes;
|
|||
|
|
|||
|
-- 4.3-Liste as diferentes localidades dos pacientes do Hospital.
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
SELECT DISTINCT
|
|||
|
localidade
|
|||
|
FROM
|
|||
|
pacientes;
|
|||
|
|
|||
|
-- 4.4- Quais os procedimentos que têm um custo superior a 15€
|
|||
|
desc procedimentos;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
procedimentos
|
|||
|
WHERE
|
|||
|
preco > '15';
|
|||
|
|
|||
|
-- 4.5-Liste as consultas onde foram efetuados procedimentos;
|
|||
|
desc consultas;
|
|||
|
|
|||
|
desc examinacoes;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
consultas c
|
|||
|
LEFT JOIN examinacoes e ON e.nr_episodio = c.nr_episodio;
|
|||
|
|
|||
|
-- 4.6-Liste as consultas que ainda não foram faturadas;
|
|||
|
desc consultas;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
consultas
|
|||
|
WHERE
|
|||
|
dta_pagamento IS NULL;
|
|||
|
|
|||
|
-- 4.7-Quais as pacientes do sexo feminino casadas?
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
pacientes
|
|||
|
WHERE
|
|||
|
estado_civil = 'c';
|
|||
|
|
|||
|
-- 4.8-Liste os pacientes que não possuem seguro de saúde.
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
desc seguros;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
pacientes p
|
|||
|
LEFT JOIN seguros s ON s.nr_apolice = p.nr_apolice;
|
|||
|
|
|||
|
-- 4.9-Quais são as seguradoras que possuem parceria com o hospital que não estão a
|
|||
|
-- cobrir o seguro de saúde de nenhum paciente?
|
|||
|
desc seguradoras;
|
|||
|
|
|||
|
desc seguros;
|
|||
|
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
seguros s
|
|||
|
RIGHT JOIN seguradoras seg ON seg.id_seguradora = s.id_seguradora
|
|||
|
RIGHT JOIN pacientes p ON p.nr_apolice = s.nr_apolice
|
|||
|
WHERE
|
|||
|
seg.id_seguradora IS NULL;
|
|||
|
|
|||
|
-- 4.10-Qual é o nome dos medicamentos que não terminam em ‘ol’ nem em ‘na’?
|
|||
|
SELECT
|
|||
|
nome
|
|||
|
FROM
|
|||
|
medicamentos
|
|||
|
WHERE
|
|||
|
nome NOT LIKE "%ol"
|
|||
|
AND nome NOT LIKE "%na";
|
|||
|
|
|||
|
-- 4.11-Qual o nome dos procedimentos que possuem um custo entre 20 e 30€?
|
|||
|
desc procedimentos;
|
|||
|
|
|||
|
SELECT
|
|||
|
desc_proc
|
|||
|
FROM
|
|||
|
procedimentos
|
|||
|
WHERE
|
|||
|
preco > 20
|
|||
|
AND preco < 30;
|
|||
|
|
|||
|
-- 4.12-Liste as localidades dos pacientes que possuem exatamente 5 caracteres.
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
SELECT DISTINCT
|
|||
|
localidade
|
|||
|
FROM
|
|||
|
pacientes
|
|||
|
WHERE
|
|||
|
length (localidade) = 5;
|
|||
|
|
|||
|
-- 4.13-Quais as especialidades que possuem ‘neuro’ no nome?
|
|||
|
desc especialidades;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
especialidades
|
|||
|
WHERE
|
|||
|
des_especialidade LIKE "%neuro%";
|
|||
|
|
|||
|
-- 4.14-Quais as especialidades que terminam em ‘logia’?
|
|||
|
desc especialidades;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
especialidades
|
|||
|
WHERE
|
|||
|
des_especialidade LIKE "%logia";
|
|||
|
|
|||
|
-- 4.15-Liste os telefones dos pacientes que começam por 253
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
desc telefones_pacientes;
|
|||
|
|
|||
|
SELECT
|
|||
|
nr_telefone
|
|||
|
FROM
|
|||
|
telefones_pacientes
|
|||
|
WHERE
|
|||
|
nr_telefone LIKE "253%";
|
|||
|
|
|||
|
-- 4.16-Liste os administrativos que se chamam ‘João’ ou ‘Pedro’.
|
|||
|
desc administrativos;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
administrativos a
|
|||
|
LEFT JOIN funcionarios f ON a.nr_mec = f.nr_mec
|
|||
|
WHERE
|
|||
|
f.nome LIKE "%João%"
|
|||
|
OR f.nome LIKE "%Pedro%";
|
|||
|
|
|||
|
-- 4.17-Liste as prescrições por ordem crescente de validade, isto é, da mais antiga
|
|||
|
-- para a mais recente.
|
|||
|
desc prescricoes;
|
|||
|
|
|||
|
SELECT
|
|||
|
*
|
|||
|
FROM
|
|||
|
prescricoes
|
|||
|
ORDER BY
|
|||
|
data_validade asc;
|
|||
|
|
|||
|
-- 4.18-Retorne para cada estado de agendamento externo (0 – hospital e 1 – externo)
|
|||
|
-- o número total de agendamentos.
|
|||
|
desc agendamentos;
|
|||
|
|
|||
|
SELECT
|
|||
|
externo,
|
|||
|
COUNT(*) AS total
|
|||
|
FROM
|
|||
|
agendamentos
|
|||
|
GROUP BY
|
|||
|
externo;
|
|||
|
|
|||
|
-- 4.19-Indique o número total de pacientes para os sexos feminino e masculino.
|
|||
|
desc pacientes;
|
|||
|
|
|||
|
SELECT
|
|||
|
sexo,
|
|||
|
COUNT(sexo) AS total
|
|||
|
FROM
|
|||
|
pacientes
|
|||
|
WHERE
|
|||
|
sexo <> 'I'
|
|||
|
GROUP BY
|
|||
|
sexo;
|
|||
|
|
|||
|
-- 4.20-Liste os procedimentos que possuem um valor acima da média por ordem
|
|||
|
-- decrescente de preço.
|
|||
|
|
|||
|
desc procedimentos;
|
|||
|
|
|||
|
select *
|
|||
|
from procedimentos p
|
|||
|
where p.preco > (select avg(preco) from procedimentos);
|
|||
|
|