С условным агрегированием:
SELECT
ROUND(100.0 * AVG(IIF(PassA, 1, 0)), 2) & '%' AS PercentA,
ROUND(100.0 * AVG(IIF(PassB, 1, 0)), 2) & '%' AS PercentB,
ROUND(100.0 * AVG(IIF(PassC, 1, 0)), 2) & '%' AS PercentC
FROM Grades
Для MS Access это также будет работать:
SELECT
ROUND(100.0 * AVG(-PassA), 2) & '%' AS PercentA,
ROUND(100.0 * AVG(-PassB), 2) & '%' AS PercentB,
ROUND(100.0 * AVG(-PassC), 2) & '%' AS PercentC
FROM Grades
, поскольку TRUE
хранится как -1
и FALSE
как 0
. Результаты:
PercentA PercentB PercentC
50% 75% 25%