-
Notifications
You must be signed in to change notification settings - Fork 0
/
practica4+_byserrano.sql
123 lines (97 loc) · 2.41 KB
/
practica4+_byserrano.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
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
--EJERCICIO 1
set serveroutput on;
DECLARE
cursor c is SELECT nombrecompleto from votantes v,localidades l
where v.localidad=l.idlocalidad and substr(dni,LENGTH(dni),1)=l.idlocalidad+1 ;
ncount int :=0;
begin
FOR nRow IN c loop
dbms_output.put_line(nRow.nombrecompleto);
ncount:=ncount+1;
end LOOP;
dbms_output.put_line(ncount);
end;
--EJERCICIO 2
set serveroutput on;
DECLARE
cursor c is SELECT * from votantes v;
votantesData votantes%rowtype;
ncount int :=0;
begin
open c;
LOOP
FETCH c into votantesData;
exit when c%notfound;
if substr(votantesData.dni,length(votantesData.dni),1)=votantesData.localidad+1
then
dbms_output.put_line(votantesData.nombrecompleto);
ncount:=ncount+1;
end if;
end LOOP;
dbms_output.put_line(ncount);
end;
---EJERCICIO 3
set serveroutput on;
DECLARE
cursor c is SELECT * from votantes;
fila c%rowtype;
ncount int :=0;
data votantes%rowtype;
BEGIN
open c;
fetch c into fila;
while c%found LOOP
if substr(fila.dni,length(fila.dni),1)=fila.localidad+1
then
dbms_output.put_line(fila.nombrecompleto);
ncount:=ncount+1;
end if;
fetch c into fila;
end loop;
dbms_output.put_line(ncount);
END;
---EJERCICIO 4
set serveroutput on;
DECLARE
cursor c is SELECT nombrecompleto,nombre from votantes v,localidades l where l.idlocalidad like DECODE(v.localidad,1,9,2,9,3,9,v.localidad);
contador number :=0;
BEGIN
FOR nrow in c loop
if nrow.nombre like 'Madrid' then
contador:=contador+1;
end if;
dbms_output.put_line(nrow.nombrecompleto||'es de '||nrow.nombre);
end loop;
dbms_output.put_line('Hay un total de '||contador||' de madrid');
END;
---EJERCICIO 5
set serveroutput on;
DECLARE
Cursor c is select dni from votantes order by dni desc;
dniN votantes.dni%type;
BEGIN
FOR nrow in c loop
if dniN is null then
dniN:=nrow.dni;
else
dbms_output.put_line(dniN||' va antes que '|| nrow.dni);
dniN:=nrow.dni;
end if;
end loop;
dbms_output.put_line('el dni mas pequeño es el '||dniN);
END;
---EJERCICIO 6
set serveroutput on;
DECLARE
cursor c is select dni,count(votante) as p
from votantes v,consultas c
where v.dni=c.votante having count(votante)>(select avg(count (votante))
from consultas
group by votante)
group by dni
order by p desc;
BEGIN
for nrow in c loop
dbms_output.put_line(nrow.dni||' ha participado '||nrow.p);
end loop;
END;