diff --git a/db/postgresql/issue570_double_export.sql b/db/postgresql/issue570_double_export.sql new file mode 100644 index 0000000000000000000000000000000000000000..a9a08906e94dc1d1a623b64974618f3b581d097f --- /dev/null +++ b/db/postgresql/issue570_double_export.sql @@ -0,0 +1,95 @@ +CREATE OR REPLACE VIEW public.view_final_report +AS SELECT DISTINCT semesters.year AS semesteryear, + semesters.num AS semesternum, + study_plans.externalid AS planexternalid, + subjects.externalid AS subjectexternalid, + record_books.externalid AS recordbookexternalid, + disciplines.examtype, + ( SELECT sum(rating_table.rate) AS sum + FROM rating_table + JOIN submodules ON rating_table.submoduleid = submodules.id + JOIN modules ON submodules.moduleid = modules.id + WHERE modules.disciplineid = disciplines.id AND modules.type = 'regular'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id + GROUP BY modules.disciplineid, rating_table.recordbookid) AS semesterrate, + ( SELECT + CASE + WHEN rt.rate IS NOT NULL THEN rt.rate + WHEN rt.rate IS NULL THEN + CASE epo.type + WHEN 'pass'::absence_pass THEN '-2'::integer + WHEN 'absence'::absence_pass THEN '-1'::integer + ELSE NULL::integer + END + ELSE NULL::integer + END AS rate + FROM view_roadmap vr + LEFT JOIN rating_table rt ON vr.submoduleid = rt.submoduleid AND rt.recordbookid = record_books.id + LEFT JOIN exam_period_options epo ON epo.submoduleid = vr.submoduleid AND epo.recordbookid = record_books.id + WHERE vr.disciplineid = disciplines.id AND vr.moduletype = 'exam'::regular_exam_bonus_extra + ORDER BY vr.moduletype, vr.moduleordernum, vr.submoduleordernum + LIMIT 1) AS examrate, + ( SELECT + CASE + WHEN rt.rate IS NOT NULL THEN rt.rate + WHEN rt.rate IS NULL THEN + CASE epo.type + WHEN 'pass'::absence_pass THEN 0 + WHEN 'absence'::absence_pass THEN '-1'::integer + ELSE NULL::integer + END + ELSE NULL::integer + END AS rate + FROM view_roadmap vr + LEFT JOIN rating_table rt ON vr.submoduleid = rt.submoduleid AND rt.recordbookid = record_books.id + LEFT JOIN exam_period_options epo ON epo.submoduleid = vr.submoduleid AND epo.recordbookid = record_books.id + WHERE vr.disciplineid = disciplines.id AND vr.moduletype = 'exam'::regular_exam_bonus_extra + ORDER BY vr.moduletype, vr.moduleordernum, vr.submoduleordernum + OFFSET 1 + LIMIT 1) AS exam2rate, + ( SELECT + CASE + WHEN rt.rate IS NOT NULL THEN rt.rate + WHEN rt.rate IS NULL THEN + CASE epo.type + WHEN 'pass'::absence_pass THEN 0 + WHEN 'absence'::absence_pass THEN '-1'::integer + ELSE NULL::integer + END + ELSE NULL::integer + END AS rate + FROM view_roadmap vr + LEFT JOIN rating_table rt ON vr.submoduleid = rt.submoduleid AND rt.recordbookid = record_books.id + LEFT JOIN exam_period_options epo ON epo.submoduleid = vr.submoduleid AND epo.recordbookid = record_books.id + WHERE vr.disciplineid = disciplines.id AND vr.moduletype = 'exam'::regular_exam_bonus_extra + ORDER BY vr.moduletype, vr.moduleordernum, vr.submoduleordernum + OFFSET 2 + LIMIT 1) AS exam3rate, + ( SELECT rating_table.rate + FROM rating_table + JOIN submodules ON rating_table.submoduleid = submodules.id + JOIN modules ON submodules.moduleid = modules.id + WHERE modules.disciplineid = disciplines.id AND modules.type = 'extra'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id + ORDER BY submodules.ordernum + LIMIT 1) AS extrarate, + ( SELECT rating_table.rate + FROM rating_table + JOIN submodules ON rating_table.submoduleid = submodules.id + JOIN modules ON submodules.moduleid = modules.id + WHERE modules.disciplineid = disciplines.id AND modules.type = 'extra'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id + ORDER BY submodules.ordernum + OFFSET 1 + LIMIT 1) AS extra2rate, + ( SELECT rating_table.rate + FROM rating_table + JOIN submodules ON rating_table.submoduleid = submodules.id + JOIN modules ON submodules.moduleid = modules.id + WHERE modules.disciplineid = disciplines.id AND modules.type = 'bonus'::regular_exam_bonus_extra AND rating_table.recordbookid = record_books.id + LIMIT 1) AS bonusrate + FROM semesters + JOIN disciplines ON disciplines.semesterid = semesters.id AND disciplines.isinactive = false + JOIN disciplines_study_plans ON disciplines_study_plans.disciplineid = disciplines.id + JOIN study_plans ON study_plans.id = disciplines_study_plans.studyplanid + JOIN subjects ON subjects.id = disciplines.subjectid + JOIN view_disciplines_recordbooks ON view_disciplines_recordbooks.disciplineid = disciplines.id AND 'attach'::attach_detach = COALESCE(view_disciplines_recordbooks.type, 'attach'::attach_detach) + JOIN record_books ON record_books.id = view_disciplines_recordbooks.recordbookid + JOIN record_books_plans ON record_books.id = record_books_plans.recordbookid AND record_books_plans.studyplanid = study_plans.id;