-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDCProcedures.sql
83 lines (75 loc) · 2.1 KB
/
DCProcedures.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
delimiter $$
CREATE PROCEDURE DCFaturacaoClinica(IN n_staff int, IN di DATE, IN df DATE)
begin
Select
C.nome,
count(*) as NrAtletas,
sum(T.preco) as Faturacao
From
Clinica as C,
TesteClinico as T
where
C.cod_clinica = T.cod_clinica
and C.id_staff = n_staff
and T.data between di and df
group by C.nome;
end $$
delimiter ;
delimiter $$
CREATE PROCEDURE DCClubeMaisTestesEntreDatasClinica(IN n_staff int, IN di DATE, IN df DATE)
begin
SELECT Clube.designacao,
count(Clube.designacao) as NrTestes
FROM Clinica
INNER JOIN TesteClinico
ON Clinica.cod_clinica = TesteClinico.cod_clinica
INNER JOIN Atleta
ON Atleta.nif = TesteClinico.nif
INNER JOIN Clube
ON Atleta.cod_clube = Clube.cod_clube where Clinica.id_staff = n_staff and TesteClinico.data between di and df group by Clube.designacao order by count(Clube.designacao) DESC limit 1;
end $$
delimiter ;
delimiter $$
CREATE PROCEDURE DCClubesInexistentesClinica(IN n_staff int)
begin
Select Cl.designacao from Clube as Cl where Cl.cod_clube not in
(SELECT Cl.cod_clube
FROM Clinica as C
INNER JOIN TesteClinico as T
ON C.cod_clinica = T.cod_clinica
INNER JOIN Atleta as A
ON A.nif = T.nif
INNER JOIN Clube as Cl
ON A.cod_clube = Cl.cod_clube where C.id_staff = n_staff);
end $$
delimiter ;
delimiter $$
create procedure DCStaffAreaClinica (IN n_staff int)
begin
select S.especialidade ,
count(S.especialidade) as NrEspecialistas
from Staff as S
join Staff_Clinica as SC
on SC.Staff_id_staff = S.id_staff
where SC.Staff_id_staff
in (select SC.Staff_id_staff
from Clinica as C
join Staff_Clinica as SC
on C.cod_clinica = SC.Clinica_cod_clinica where C.id_staff = n_staff)
group by S.especialidade order by count(S.especialidade);
end $$
delimiter ;
delimiter $$
create procedure DCMesesOrdemCrescenteClinica(IN n_staff int)
begin
select
month(T.data) as Mes,
count(month(T.data)) as NrTestes
from Clinica as C,
TesteClinico as T
where T.cod_clinica = C.cod_clinica
and C.id_staff = n_staff
group by month(T.data)
order by count(month(T.data));
end $$
delimiter ;