/** * Return the testposition, questionid, questionline and score for each question in a test. * * @param dat the transaction within which the query should be executed. * @param deploy the name of the test (deploy file). * @return the requested data. * @throws SQLException */ public ResultSet queryVariantReport(Transaction dat, String deploy) throws SQLException { return dat.query( "SELECT tq.questionnumber, q.question, r.questionline, s.score " + "FROM " + getPrefix() + "tests t " + "JOIN " + getPrefix() + "questions q ON t.ti=q.ti " + "JOIN " + getPrefix() + "testquestions tq on t.ti=tq.ti and q.question=tq.question " + "JOIN " + getPrefix() + "results r on q.qi=r.qi " + "JOIN " + getPrefix() + "scores s on q.qi=s.qi AND axis = '' " + "WHERE deploy='" + deploy + "' AND t.admin = 0 AND t.finished > 0" + "AND q.attempt = (SELECT MAX(iq.attempt) FROM " + getPrefix() + "questions iq " + "WHERE iq.ti = q.ti AND iq.question=q.question AND iq.finished > 0) " + "ORDER BY tq.questionnumber, q.question, t.ti"); }
/** * Get the number of non-admin attempts at each test that were started and completed, ordered by * number completed. * * @param dat the transaction within which the query should be executed. * @return the requested data. * @throws SQLException */ public ResultSet queryTestUsageReport(Transaction dat) throws SQLException { return dat.query( "SELECT " + "deploy, " + "SUM(CAST(finished AS INTEGER)) AS attemptscompleted, " + "COUNT(1) AS attemptsstarted " + "FROM " + getPrefix() + "tests " + "WHERE admin = 0 " + "GROUP BY deploy " + "ORDER BY SUM(CAST(finished AS INTEGER)) DESC"); }
/** * Get the number of non-admin attempts that were started and completed, each month. * * @param dat the transaction within which the query should be executed. * @return the requested data. * @throws SQLException */ public ResultSet queryMonthlyTestFinishes(Transaction dat) throws SQLException { return dat.query( "SELECT " + extractYearFromTimestamp("finishedclock") + " AS year, " + extractMonthFromTimestamp("finishedclock") + " AS month, " + "COUNT(1) AS attemptscompleted " + "FROM " + getPrefix() + "tests " + "WHERE admin = 0 AND finishedclock IS NOT NULL " + "GROUP BY " + extractYearFromTimestamp("finishedclock") + ", " + extractMonthFromTimestamp("finishedclock") + " " + "ORDER BY " + extractYearFromTimestamp("finishedclock") + " ASC, " + extractMonthFromTimestamp("finishedclock") + " ASC"); }