diff --git a/db/duplicate.sql b/db/duplicate.sql new file mode 100644 index 0000000000000000000000000000000000000000..a1f2cff3e5b3b4392dbb59f9a247ad26c5465d45 --- /dev/null +++ b/db/duplicate.sql @@ -0,0 +1,49 @@ +# Выборка всех студентов, с повторяющимися именами +SELECT distinct st1.* +FROM students as st1 +WHERE ( + SELECT count(*) from students as st + where CONCAT( st.LastName, st.FirstName, st.SecondName ) + LIKE CONCAT( st1.LastName, st1.FirstName, st1.SecondName) + ) > 1 +ORDER BY LastName + + +# выборка всех оценок для студента (с учетом повторений) +SELECT students.ID AS "StudentID", students.LastName, rating_table . * + FROM students + LEFT JOIN rating_table ON rating_table.StudentID = students.ID + WHERE CONCAT( students.LastName, students.FirstName, students.SecondName ) LIKE ( + SELECT CONCAT( st.LastName, st.FirstName, st.SecondName ) + FROM students AS st + WHERE st.id =133 + ) +ORDER BY SubmoduleID + + + +# студенты, повторно привязанные к дисциплинам +SELECT students.ID as "StudentID", + students.LastName, + disciplines_students.ID as "disciplines_studentsID" +FROM students +left join disciplines_students on disciplines_students.StudentID = students.ID +WHERE CONCAT( students.LastName, students.FirstName, students.SecondName) LIKE ( + SELECT CONCAT( st.LastName, st.FirstName, st.SecondName ) + from students as st + where st.id = 133 + ) + + +# дублирование оценок +SELECT distinct st1.*, rating_table.SubmoduleID, count(*) as "cnt" +FROM students as st1 +LEFT JOIN rating_table on rating_table.StudentID = st1.ID +WHERE CONCAT( st1.LastName, st1.FirstName, st1.SecondName ) LIKE ( + SELECT CONCAT( st.LastName, st.FirstName, st.SecondName ) + FROM students AS st + WHERE st.id = # studentID + ) +GROUP BY st1.LastName, rating_table.SubmoduleID +ORDER BY cnt desc +