一个quiz
可以没有,一个或多个submissions
。每个submission
都有submissions.correct = t
或submissions.correct = f
。
什么是最好的Postgres 9.4查询来获取所有quizzes
(无论他们是否有Submission
),按照submissions
与{correct = t
的数量排序{1}} {1}} {}} {}} {/}} {}} {/}}
ASC
答案 0 :(得分:1)
SELECT q.*, s.ct
FROM quizzes q
LEFT JOIN (
SELECT quiz_id, count(*) AS ct
FROM submissions
WHERE correct
GROUP BY 1
) s ON s.quiz_id = q.id
ORDER BY s.ct NULLS FIRST;
LEFT JOIN
以保留测验而不在结果中提交。NULLS FIRST
在这里至关重要,因此首先没有任何(正确)提交的测验。
boolean
类型。表达式correct = t
与correct
完全相同。