Comandos SQL: Consultas, Joins e Gerenciamento de Usuários

Classificado em Inglês

Escrito em em português com um tamanho de 3,04 KB

Descreva o comando SQL solicitado na questão anterior:

SELECT TO_CHAR(data_hora, 'month "de" YYYY') AS data, medico_crm, COUNT(*) AS quant
FROM Consultas
WHERE nome_convenio IS NULL
GROUP BY data_hora, medico_crm;

Se deseja uma consulta que liste a idade atual em anos:

SELECT TRUNC((data_nascimento - SYSDATE) / 365) AS idade_atual
FROM Paciente;

Lista de códigos e nomes dos médicos com suas respectivas especialidades

SELECT A.nome, B.crm, C.especialidade
FROM Medicos A
INNER JOIN Especialidade_Medico B ON A.crm = B.crm
INNER JOIN Especialidade C ON B.codigo_especialidade = C.codigo
ORDER BY A.nome ASC;

Consultas com convênio registrado utilizando JOIN

Descreva o comando SQL da questão anterior que exibe consultas que têm o convênio registrado:

SELECT A.nome, B.nome, TO_CHAR(C.data_hora, 'DD Month YYYY HH24:MI:SS')
FROM Consulta C
INNER JOIN Paciente B ON B.codigo = C.paciente_codigo
WHERE C.nome_convenio IS NOT NULL
ORDER BY A.nome ASC;

Controle do crescimento das informações em cada tabela

O DBA precisa controlar o crescimento das informações contidas em cada tabela:

SELECT * FROM (
SELECT 'consultas' AS tabela, COUNT(*) FROM consultas
UNION ALL
SELECT 'especialidade', COUNT(*) FROM especialidade
);

Quantidade de pacientes por ano de nascimento e estado

Mostre a quantidade de pacientes cadastrados por ano de nascimento e por estado do endereço:

SELECT estado, data_nascimento, COUNT(*) AS quant
FROM paciente
GROUP BY estado, data_nascimento;

Quantidade de pacientes agrupada por estado

SELECT estado, COUNT(*) AS quant
FROM paciente
GROUP BY estado;

Inserção de novo departamento e consultas relacionadas

Insira um novo departamento na tabela X, crie uma consulta que exibe o nome do funcionário e o número do departamento de todos os funcionários e liste os dados de departamentos que não têm funcionários:

INSERT INTO DEPT (DEPTNO, DNAME, LOC)
VALUES (90, 'NOVO_DEPT', 'BOSTON');

SELECT E.EMPNO, D.DEPTNO, D.DNAME
FROM EMP E
RIGHT JOIN DEPT D ON E.DEPTNO = D.DEPTNO;

Consulta de funcionários que recebem comissão (INNER JOIN)

Crie uma consulta que exiba o nome do funcionário, o departamento e a localização dos departamentos de quem recebe comissão:

SELECT E.ENAME, D.DNAME, D.LOC
FROM EMP E
INNER JOIN DEPT D ON E.DEPTNO = D.DEPTNO
WHERE E.COMM IS NOT NULL;

FULL JOIN

SELECT E.employee_id, D.department_name
FROM employees E
FULL JOIN departments D ON D.department_id = E.department_id;

Criação de usuário

CREATE USER Igor IDENTIFIED BY senha;

Criação de atribuição (role)

CREATE ROLE manager;

Concessão de privilégios a uma atribuição

GRANT CREATE TABLE, CREATE VIEW TO manager;

Concessão de uma atribuição aos usuários

GRANT manager TO DEHAAN, KOCHHAR;

Entradas relacionadas: