我一直试图从每个测试中获得一定比例的问题但是我在组合这两个查询时遇到了问题。我遇到麻烦的地方是除以并获得正确的查询。我使用How to calculate percentage with a SQL statement作为参考。
表A
SELECT exams_id as exams, Count(*) AS TotalExamQuestions
FROM exams_questions AS eq
JOIN concerns as con ON eq.concerns_id = con.concerns_id
GROUP BY exams_id
ORDER BY exams_id
表B
SELECT e.exams_description, eq.exams_id as exams, con.concerns_id as ConcernID, count(*) as NumberOfConcerns
FROM exams_questions as eq
JOIN concerns as con ON eq.concerns_id = con.concerns_id
JOIN exams as e ON e.exams_id = eq.exams_id
WHERE eq.exams_id is not null
GROUP BY eq.exams_id, con.concerns_id, con.concerns_description, e.exams_description
ORDER BY eq.exams_id asc, con.concerns_id
合并表:
SELECT e.exams_description, eq.exams_id as exams, con.concerns_id as ConcernID, Count(*) as numberofQuestions, Cast(Count(*)* 100.0 / Sum(Count(*)) OVER() AS DECIMAL(18, 2)) as ExamPercent
FROM exams_questions as eq
JOIN concerns AS con on eq.concerns_id = con.concerns_id
JOIN exams AS e on e.exams_id = eq.exams_id
GROUP BY eq.exams_id, con.concerns_id, e.exams_description
ORDER BY eq.exams_id asc, con.concerns_id
如果有100个考题,这项工作很有效。但是考试的长度各不相同。我相信改变的路线是:
Cast(count(*)* 100.0 / sum(count(*)) over() AS DECIMAL(18, 2)) as ExamPercent
我如何才能使表A中的问题数量变得动态?
感谢您提供任何指导。