diff --git a/dsk05-task.md b/dsk05-task.md new file mode 100644 index 0000000..a792b4e --- /dev/null +++ b/dsk05-task.md @@ -0,0 +1,15 @@ +Прошу сделать выгрузку по следующим вопросам: +1. Сколько человек приняло участие в тестировании (всего). + +-- участвовали в тестировании (имеют попытку сдачи) --> 345 +SELECT count(DISTINCT mdl_user.id) +FROM mdl_quiz_attempts +LEFT JOIN mdl_user +on mdl_quiz_attempts.userid=mdl_user.id +WHERE username LIKE "dsk05-%"; + + +2. Результат по каждой группе тестов, на каждого специалиста +3. Время прохождения тестов по каждому специалисту (на каждую группу в отдельности и общее время на весь этап тестирования). +4. Список лиц, которые вообще не начали похождение тестов. +(сделал в заявке) diff --git a/src/main/puml/ERD-moodle.png b/src/main/puml/ERD-moodle.png new file mode 100644 index 0000000..dd61721 Binary files /dev/null and b/src/main/puml/ERD-moodle.png differ diff --git a/src/main/puml/moodle-erd.puml b/src/main/puml/moodle-erd.puml new file mode 100644 index 0000000..4ed94d2 --- /dev/null +++ b/src/main/puml/moodle-erd.puml @@ -0,0 +1,37 @@ +@startuml ERD-moodle +!define primary_key(x) <&key> x +!define foreign_key(x) <&key> x +!define column(x) <&media-record> x +!define table(x) entity x << (T, white) >> + +title "Entity Relationship Diagram (ERD): moodle" +entity "mdl_user" as users +entity "mdl_quiz_attempt" as attempts +entity "mdl_quiz" as quizes + +' Отношения +table(users){ + primary_key(id):INTEGER + column(username):VARCHAR + column(email):VARCHAR +} + +table(attempts){ + primary_key(id):INTEGER + foreign_key(quiz):INTEGER + foreign_key(userid):INTEGER + column(attempt):INTEGER + column(timestart):DATE + column(timefinish):DATE + column(sumgrades):DECIMAL +} + +table(quizes){ + primary_key(id):INTEGER + column(name):VARCHAR +} + +' Связи +users ||--|{ attempts +quizes ||--|{ attempts +@enduml diff --git a/src/main/sql/script.sql b/src/main/sql/script.sql index 3e9fe36..9ccb467 100644 --- a/src/main/sql/script.sql +++ b/src/main/sql/script.sql @@ -1,7 +1,93 @@ +-- назначенные аккаунты SELECT id, username, email FROM mdl_user +where username LIKE "dsk05-%"; + +-- всего назначео аккаунтов --> 1121 +SELECT count(*) +FROM mdl_user +WHERE username LIKE "dsk05-%"; + +-- участвовали в тестировании (имеют попытку сдачи) --> 345 +SELECT count(DISTINCT mdl_user.id) +FROM mdl_quiz_attempts +LEFT JOIN mdl_user +on mdl_quiz_attempts.userid=mdl_user.id +WHERE username LIKE "dsk05-%"; + +-- перечень тестов, которые сдавали +SELECT mdl_quiz.name, mdl_quiz.id +FROM mdl_quiz_attempts +LEFT JOIN mdl_user on mdl_quiz_attempts.userid=mdl_user.id +LEFT JOIN mdl_quiz on mdl_quiz_attempts.quiz=mdl_quiz.id +WHERE username LIKE "dsk05-%" +GROUP BY mdl_quiz.id; + +name id +Тестирование по п.32. Строительный контроль за общестроительными работами 19 +40. Строительный контроль при строительстве, реконструкции и капитальном ремонте объектов нефтяной и газовой промышленности 27 +1.2. Земляные работы 50 +1.1. Подготовительные работы 51 +1.4. Свайные работы 53 +1.5. Искусственное закрепление грунтов 54 +1.6. Монтаж и устройство бетонных, железобетонных, сборных бетонных, сборных железобетонных, и монолитных конструкций 55 +1.8. Монтаж металлических конструкций 57 +1.10. Защита строительных конструкций 59 +46.3 Организация строительства (начальник ПТО, линейный работник) 104 +49.1 Монтаж магистральных и промысловых трубопроводов 107 +51. Контроль качества сварных соединений и изоляции 108 +65. Особенности выполнения строительных работ в условиях вечной мерзлоты 111 + +-- Вывод результатов по одному тесту >> 19 +-- пользователи имеющие результаты --> результаты без пустых строк +SELECT mdl_user.username, + quiz, + userid, + attempt, + FROM_UNIXTIME(timestart), + FROM_UNIXTIME(timefinish), + mdl_quiz_attempts.sumgrades, + DATE_FORMAT(FROM_UNIXTIME(timefinish - timestart), '%imin:%ssec') as "lost-time" +FROM mdl_quiz_attempts +LEFT JOIN mdl_user on mdl_quiz_attempts.userid=mdl_user.id +LEFT JOIN mdl_quiz on mdl_quiz_attempts.quiz=mdl_quiz.id +WHERE username LIKE "dsk05-%" and mdl_quiz.id in(19); + +-- все пользователи --> результаты и пустые строки +SELECT mdl_user.username, + quiz, + userid, + attempt, + FROM_UNIXTIME(timestart), + FROM_UNIXTIME(timefinish), + mdl_quiz_attempts.sumgrades, + DATE_FORMAT(FROM_UNIXTIME(timefinish - timestart), '%imin:%ssec') as "lost-time" +FROM mdl_user +LEFT JOIN mdl_quiz_attempts on mdl_quiz_attempts.userid=mdl_user.id +LEFT JOIN mdl_quiz on mdl_quiz_attempts.quiz=mdl_quiz.id +WHERE username LIKE "dsk05-%" and mdl_quiz.id in(19); + +-- Общее время потраченое на тестирование +-- +SELECT mdl_user.username, + DATE_FORMAT(FROM_UNIXTIME(sum(timefinish - timestart)), '%hh:%imin:%ssec') as "Полное время тестирования", + count(*) as "Количество тестов" +FROM mdl_user +LEFT JOIN mdl_quiz_attempts on mdl_quiz_attempts.userid=mdl_user.id +LEFT JOIN mdl_quiz on mdl_quiz_attempts.quiz=mdl_quiz.id +WHERE username LIKE "dsk05-%" +GROUP BY mdl_user.username +HAVING DATE_FORMAT(FROM_UNIXTIME(sum(timefinish - timestart)), '%hh:%imin:%ssec') is not null; + +-- все тесты SELECT id, name FROM mdl_quiz; + +-- все данные о попытках SELECT id, quiz, userid, attempt, timestart, timefinish, sumgrades FROM mdl_quiz_attempts; + + + + -- для отчета --> WITH pure AS ( SELECT