Использование oracle SQL для поиска дубликатов - PullRequest
0 голосов
/ 03 февраля 2020

Я проверяю качество результатов тестов студентов и имею несколько разных таблиц интереса.

STUDENTTEST имеет testID, test_date и studentID. У STUDENTS есть student_name и переменная с именем ID, которая ссылается на студенческий STUDENTTEST.

Я хочу найти студентов, у которых есть записи, в которых testID и test_date одинаковы. И я хочу иметь возможность иметь ссылку на таблицу учеников, чтобы видеть имена дубликатов учеников.

Надеюсь, это имеет смысл! Спасибо!

Ответы [ 3 ]

0 голосов
/ 03 февраля 2020

Вы можете попробовать использовать группу, имея счет (*)> 1

 select * 
 from STUDENTTEST T
 inner join STUDENTS  S ON s.ID = T.studentid
 group  testID, test_date,  studentID
 having count(*) >1
0 голосов
/ 04 февраля 2020

Хммм. , , Вы, кажется, хотите, чтобы студенты, которые проходили один и тот же тест в один и тот же день более одного раза. Я думаю:

select *
from students s join
     (select testID, test_date, studentID, count(*) as cnt
      from studenttests st
      group by testID, test_date, studentID
      having count(*) >= 2
     ) st
     using (studentid);

Это возвращает одну строку для каждой комбинации студент / тест, которая соответствует вашим критериям.

0 голосов
/ 03 февраля 2020

Вы можете join таблицы students и student_tests, группировать по учащемуся, идентификатору теста и дате теста, а затем фильтровать с помощью предложения having, чтобы сохранить только дубликаты:

select s.id, s.student_name, t.test_id, t.test_date, count(*) cnt_duplicates
from students s
inner join student_tests t on t.student_id = s.id
group by s.id, s.student_name, t.test_id, t.test_date
having count(*) > 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...