diff --git a/src/schema.sql b/src/schema.sql index 595f342..43185eb 100644 --- a/src/schema.sql +++ b/src/schema.sql @@ -27,6 +27,15 @@ category) ); +CREATE TABLE PUBLIC.STUDENTS ( + STUDENTID VARCHAR primary key, + NAME VARCHAR, + USERCODE VARCHAR, + email VARCHAR, + SEND_FEEDBACK BOOLEAN, + email_sent boolean +) + CREATE TABLE submission ( @@ -126,27 +135,21 @@ ORDER BY category.sort_order, criterion.sort_order; -CREATE TABLE PUBLIC.STUDENTS( - STUDENTID VARCHAR primary key, - NAME VARCHAR, - USERCODE VARCHAR, - email VARCHAR, - SEND_FEEDBACK BOOLEAN -) - -CREATE VIEW allmarks("Student", "Weighted Mark", "Marking Complete") +CREATE VIEW allmarks("Student", "Weighted Mark", "Marking Complete", "Email Sent") AS SELECT submission.student, - COALESCE(Cast(Round(mark, 2) AS VARCHAR), '') AS mark, - COALESCE(Cast(complete AS VARCHAR), '') AS complete + COALESCE(Cast(Round(mark, 2) AS VARCHAR), ''), + COALESCE(Cast(complete AS VARCHAR), ''), + COALESCE(Cast(email_sent AS VARCHAR), '') FROM submission LEFT JOIN mark ON submission.student = mark.student LEFT JOIN (SELECT student, Count(criterion) = (SELECT Count(criterion) FROM criterion) AS complete FROM result - GROUP BY student) c ON submission.student = c.student; + GROUP BY student) c ON submission.student = c.student + LEFT JOIN students on submission.student = students.usercode; -- use this if you want to produce useful category totals (and you don't care about weighting for individual criterion)