Рассчитать общий процент Access Query - PullRequest
1 голос
/ 01 апреля 2019

У меня есть MS Access Query, который возвращает следующие образцы данных:

+-----+------+------+
| Ref | ANS1 | ANS2 |
+-----+------+------+
| 123 | A    | A    |
| 234 | B    | B    |
| 345 | C    | C    |
| 456 | D    | E    |
| 567 | F    | G    |
| 678 | H    | I    |
+-----+------+------+

Возможно ли, чтобы Access возвращал общий процент, где ANS1 = ANS2?

Итак, мой новый запрос вернется:

50

Я знаю, как получить количество записей, возвращаемых исходным запросом, но не знаю, как рассчитать процент.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2019

Поскольку вы ищете процент выполнения некоторого условия по всему набору данных, задача может быть сведена к функции, возвращающей либо 1 (когда условие проверено), либо 0 (когда условие не проверено), а затем вычисляется среднее значение по всем записям.

Этого можно достичь несколькими способами, например, можно использовать базовый оператор iif:

select avg(iif(t.ans1=t.ans2,1,0)) from YourTable t

Или, используя знание о том, что логическое значение в MS Access представляется с использованием -1 (True) или 0 (False), выражение можно уменьшить до:

select -avg(t.ans1=t.ans2) from YourTable t

В каждом из вышеперечисленных замените YourTable на имя вашей таблицы.

0 голосов
/ 01 апреля 2019

Если вы знаете, как получить счет, то примените те же знания дважды:

SELECT Count([ANS1]) As MatchCount FROM [Data]
WHERE [ANS1] = [ANS2]

, поделенное на общее количество

SELECT Count([ANS1]) As AllCount FROM [Data]

Чтобы объединить их в базовомSQL-запрос, требуется «фиктивный» запрос, так как Access не позволяет выбирать только необработанные данные:

SELECT TOP 1
   ((SELECT Count([ANS1]) As MatchCount FROM [Data] WHERE [ANS1] = [ANS2])
   /
   (SELECT Count([ANS1]) As AllCount FROM [Data]))
   AS MatchPercent
FROM [Data]

Это, конечно, предполагает наличие хотя бы одной строки ... так что это неделить на ноль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...