-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlab4_queries.sql
More file actions
163 lines (124 loc) · 3.95 KB
/
lab4_queries.sql
File metadata and controls
163 lines (124 loc) · 3.95 KB
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
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
INSERT INTO Degrees (name, years) VALUES
('Ingeniería del Software', 4),
('Ingeniería del Computadores', 4),
('Tecnologías Informáticas', 4);
INSERT INTO Subjects (name, acronym, credits, year, type, degreeId) VALUES
('Fundamentos de Programación', 'FP', 12, 1, 'Formacion Basica', 3),
('Lógica Informatica', 'LI', 6, 2, 'Optativa', 3);
INSERT INTO Groups (name, activity, year, subjectId) VALUES
('T1', 'Teoria', 2019, 1),
('L1', 'Laboratorio', 2019, 1),
('L2', 'Laboratorio', 2019, 1);
INSERT INTO Students (accessMethod, dni, firstname, surname, birthdate, email) VALUES
('Selectividad', '12345678A', 'Daniel', 'Pérez', '1991-01-01', 'daniel@alum.us.es'),
('Selectividad', '22345678A', 'Rafael', 'Ramírez', '1992-01-01', 'rafael@alum.us.es'),
('Selectividad', '32345678A', 'Gabriel', 'Hernández', '1993-01-01', 'gabriel@alum.us.es');
INSERT INTO GroupsStudents (groupId, studentId) VALUES
(1, 1),
(3, 1);
INSERT INTO Grades (value, gradeCall, withHonours, studentId, groupId) VALUES
(4.50, 1, 0, 1, 1);
UPDATE Students
SET birthdate = '1998-01-01', surname='Fernández'
WHERE studentId = 3;
UPDATE Subjects
SET credits = credits/2;
DELETE FROM Grades
WHERE gradeId = 1;
DELETE FROM Groups
WHERE activity = 'Laboratorio';
SELECT *
FROM Students, Groups
WHERE accessMethod = 'Selectividad';
SELECT credits > 3
FROM Subjects;
SELECT AVG(credits)
FROM Subjects;
SELECT COUNT(*)
FROM Subjects
WHERE credits > 4;
SELECT COUNT(DISTINCT accessMethod)
FROM Students;
-- SELECT diversos
--Todas las asignaturas
SELECT *
FROM Subjects;
--Asignatura con acronimo FP
SELECT *
FROM Subjects
WHERE acronym='FP';
--Nombres y acrónimos de todas las asignaturas
SELECT name, acronym
FROM Subjects;
--Media de las notas del grupo de id 18
SELECT AVG(VALUE)
FROM Grades
WHERE groupId=18;
--Total de créditos de las asignaturas del grado de tecnologías informáticas (degreeId 3)
SELECT SUM(credits)
FROM Subjects
WHERE degreeId=3;
--Notas con valor menor que 4 o mayor que 6
SELECT *
FROM Grades
WHERE value < 4 OR value > 6;
--Nombres de grupos diferentes
SELECT DISTINCT NAME
FROM Groups;
--Máxima nota del alumno de id 1
SELECT MAX(VALUE)
FROM Grades
WHERE studentId=1;
--Alumnos con un apellido igual al acrónimo de alguna asignatura
SELECT *
FROM Students
WHERE surname IN (SELECT acronym FROM Subjects);
-- IDs de alumnos del curso 2019
SELECT DISTINCT(StudentId)
FROM GroupsStudents
WHERE groupId IN (SELECT groupId FROM Groups WHERE year = 2019);
-- Alumnos con un DNI terminado en la letra C
SELECT *
FROM Students
WHERE dni LIKE('%C')
-- Alumnos con un nombre de 6 letras
SELECT *
FROM Students
WHERE firstName LIKE('______') -- 6 guiones bajos
-- Alumnos nacidos antes de 1995
SELECT *
FROM Students
WHERE YEAR(birthdate) < 1995
-- ALumnos nacidos entre enero y febrero
SELECT *
FROM Students
WHERE (MONTH(birthdate) >= 1 AND MONTH(birthdate) <= 2)
-- Vistas
CREATE OR REPLACE VIEW ViewGradesGroup18 AS
SELECT * FROM Grades WHERE groupId = 18;
SELECT MAX(value) FROM ViewGradesGroup18;
SELECT COUNT(*) FROM ViewGradesGroup18;
SELECT * FROM ViewGradesGroup18 WHERE gradeCall = 2;
CREATE OR REPLACE VIEW ViewGradesGroup18Call1 AS
SELECT * FROM ViewGradesGroup18 WHERE gradeCall = 1;
SELECT * FROM ViewGradesGroup18Call1;
--Para casa
--Nombre de las asignaturas obligatorias
SELECT NAME
FROM Subjects
WHERE type='Obligatoria';
--Media de las notas del grupo de id 19, sin usar AVG
SELECT SUM(value)/COUNT(*)
FROM Grades
WHERE groupId=18;
--Cantidad de nombres de grupos diferentes
SELECT COUNT(DISTINCT NAME)
FROM Groups;
--Notas con valor igual o superior a 9, pero que no son matrícula de honor
SELECT *
FROM Grades
WHERE value >= 9 AND withHonours=0;
--Notas entre 4 y 6
SELECT *
FROM Grades
WHERE value >= 4 AND value <= 6;