Permalink
Cannot retrieve contributors at this time
Name already in use
A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
IISSI1-Lab05-Instrucciones-SQL-II/queries-2.sql
Go to fileThis commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
175 lines (142 sloc)
5.5 KB
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
SELECT * | |
FROM Grades | |
ORDER BY value; | |
SELECT * | |
FROM Grades | |
WHERE VALUE >5 | |
ORDER BY (SELECT surname | |
FROM Students | |
WHERE Students.studentId = Grades.studentId) | |
DESC; | |
SELECT * | |
FROM Grades | |
ORDER BY VALUE DESC | |
LIMIT 5; | |
SELECT * | |
FROM Grades | |
ORDER BY VALUE DESC | |
LIMIT 5 OFFSET 5; | |
SELECT * | |
FROM Groups, GroupsStudents, Students; | |
SELECT * | |
FROM Groups | |
JOIN GroupsStudents ON (Groups.groupId = GroupsStudents.groupId) | |
JOIN Students ON (GroupsStudents.studentId = Students.studentId); | |
SELECT * | |
FROM Groups, GroupsStudents, Students | |
WHERE Groups.groupId = GroupsStudents.groupId AND | |
GroupsStudents.studentId = Students.studentId; | |
SELECT firstName, surname, AVG(value) | |
FROM Students | |
JOIN Grades ON (Students.studentId = Grades.studentId) | |
GROUP BY Students.studentId; | |
CREATE OR REPLACE VIEW ViewSubjectGrades AS | |
SELECT Students.studentId, Students.firstName, Students.surname, | |
Subjects.subjectId, Subjects.name, | |
Grades.value, Grades.gradeCall, | |
Groups.year | |
FROM Students | |
JOIN Grades ON (Students.studentId = Grades.studentId) | |
JOIN Groups ON (Grades.groupId = Groups.groupId) | |
JOIN Subjects ON (Groups.subjectId = Subjects.subjectId); | |
SELECT gradeCall, name, AVG(value) | |
FROM ViewSubjectGrades | |
WHERE VALUE >= 5 AND year = 2018 | |
GROUP BY gradeCall, subjectId; | |
SELECT name, AVG(VALUE) | |
FROM ViewSubjectGrades | |
GROUP BY NAME | |
HAVING COUNT(*) > 2; | |
-- Número de alumnos nacidos en cada año | |
SELECT YEAR(birthdate), COUNT(*) | |
FROM Students | |
GROUP BY YEAR(birthdate); | |
-- Número de alumnos por grado en el curso 2019 | |
-- Vista con los estudiantes de cada grado | |
CREATE OR REPLACE VIEW ViewDegreeStudents AS | |
SELECT Students.*, Degrees.*, year | |
FROM Students | |
JOIN GroupsStudents ON (Students.studentId = GroupsStudents.studentId) | |
JOIN Groups ON (GroupsStudents.groupId = Groups.groupId) | |
JOIN Subjects ON (Groups.subjectId = Subjects.subjectId) | |
JOIN Degrees ON (Subjects.degreeId = Degrees.degreeId); | |
SELECT name, COUNT(*) | |
FROM ViewDegreeStudents | |
WHERE year = 2019 | |
GROUP BY NAME; | |
-- Nota máxima de cada alumno, con el nombre y apellidos | |
SELECT firstName, surname, MAX(VALUE) | |
FROM ViewSubjectGrades | |
GROUP BY studentId; | |
-- Nombre y número de grupos de teoría de las 3 asignaturas con mayor número de grupos de teoría en el año 2019 | |
-- Vista con las asignaturas de cada grupo | |
CREATE OR REPLACE VIEW ViewSubjectGroups AS | |
SELECT Subjects.*, Groups.name AS groupName, Groups.activity, Groups.year | |
FROM Subjects JOIN Groups ON (Subjects.subjectId = Groups.subjectId); | |
SELECT name, COUNT(*) | |
FROM ViewSubjectGroups | |
WHERE year = 2019 AND activity = 'Teoria' | |
GROUP BY subjectId | |
ORDER BY COUNT(*) DESC LIMIT 3; | |
-- Nombre y apellidos de alumnos por año que tuvieron una nota media mayor que la nota media del año | |
-- Vista con la nota media de cada año | |
CREATE OR REPLACE VIEW ViewAvgGradesYear AS | |
SELECT year, AVG(VALUE) AS average | |
FROM ViewSubjectGrades | |
GROUP BY year; | |
SELECT firstName, surname, year, AVG(VALUE) AS studentAverage | |
FROM ViewSubjectGrades | |
GROUP BY studentId, year | |
HAVING (studentAverage > (SELECT average | |
FROM ViewAvgGradesYear | |
WHERE ViewAvgGradesYear.year = ViewSubjectGrades.year)); | |
-- Nombre de asignaturas que pertenecen a un grado con más de 4 asignaturas | |
-- Vista con el número de asignaturas de cada grado | |
CREATE OR REPLACE VIEW ViewDegreeNumSubjects AS | |
SELECT Degrees.degreeId, COUNT(*) AS numSubjects | |
FROM Subjects JOIN Degrees ON (Subjects.degreeId = Degrees.degreeId) | |
GROUP BY degreeId; | |
SELECT name | |
FROM Subjects | |
WHERE (SELECT numSubjects | |
FROM ViewDegreeNumSubjects | |
WHERE ViewDegreeNumSubjects.degreeId = Subjects.degreeId) > 4; | |
-- Casa | |
-- Número de suspensos de cada alumno, dando nombre y apellidos | |
SELECT firstName, surname, COUNT(*) | |
FROM Students JOIN Grades ON (Students.studentId = Grades.studentId) | |
WHERE value < 5 | |
GROUP BY Students.studentId; | |
-- La tercera página de 3 grupos, ordenados según su año por orden descendente | |
SELECT * | |
FROM Groups | |
ORDER BY YEAR DESC | |
LIMIT 3 OFFSET 6; | |
-- Un listado de los grupos, añadiendo el acrónimo de la asignatura a la que pertenecen y el nombre del grado. | |
SELECT Groups.*, acronym, Degrees.name | |
FROM Groups | |
JOIN Subjects ON (Groups.subjectId = Subjects.subjectId) | |
JOIN Degrees ON (Subjects.degreeId = Degrees.degreeId); | |
-- Número de métodos de acceso diferentes de los alumnos de cada grupo, dando el id del grupo. | |
CREATE OR REPLACE VIEW ViewGroupStudents AS | |
SELECT groupId, Students.studentId, accessMethod | |
FROM Students | |
JOIN ViewGroupsStudents ON (Students.studentId = ViewGroupsStudents.studentId); | |
SELECT groupId, COUNT(DISTINCT accessMethod) | |
FROM ViewGroupStudents | |
GROUP BY groupId; | |
-- Nota ponderada por créditos de cada alumno, dando nombre y apellidos, del curso 2019 en la primera convocatoria. | |
-- Pista: midifique la vista subjectGrades añadiendo los atributos que falten. La nota ponderada es igual a la suma de las notas multiplicadas por los creditos de la asignatura, dividida entre la suma de todos los créditos de las asignaturas | |
CREATE OR REPLACE VIEW ViewSubjectGrades2 AS | |
SELECT Students.studentId, Students.firstName, Students.surname, | |
Subjects.subjectId, Subjects.name, Subjects.credits, | |
Grades.value, Grades.gradeCall, | |
Groups.year | |
FROM Students | |
JOIN Grades ON (Students.studentId = Grades.studentId) | |
JOIN Groups ON (Grades.groupId = Groups.groupId) | |
JOIN Subjects ON (Groups.subjectId = Subjects.subjectId); | |
SELECT firstName, surname, SUM(value*credits)/SUM(credits) | |
FROM ViewSubjectGrades2 | |
WHERE year = 2019 AND gradeCall = 1 | |
GROUP BY studentId; |