Среднее количество полей при игнорировании пробелов в Access 2016 - PullRequest
0 голосов
/ 14 июля 2020

Я пытаюсь усреднить несколько полей в каждой записи в Access 2016. Я хочу иметь возможность импортировать запрос в Excel для дальнейшего анализа.

Некоторые записи содержат пустые поля, которые я хочу игнорировать . Сначала я попытался использовать Nz, который работал в Access, но не мог быть импортирован в Excel.

Затем я попробовал следующее:

SELECT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA, (iif(isnull(B365H))+ iif(isnull(BWH))+ iif(isnull(IWH))+ iif(isnull(LBH))+ iif(isnull(PSH))+ iif(isnull(WHH))+ iif(isnull(VCH)))/7 AS AvgHome
FROM [Bund]
GROUP BY Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA;

Но получил сообщение «Неверное количество аргументов, используемых с функцией. в выражении запроса "ошибка.

Кто-нибудь может увидеть, в чем проблема?

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 июля 2020

Попробуйте ниже

SELECT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA, (Nz(B365H,0)+ Nz(BWH,0)+ Nz(IWH,0)+ Nz(LBH,0)+ Nz(PSH,0)+ Nz(WHH,0)+ Nz(VCH,0))/7 AS AvgHome
FROM [Bund]
GROUP BY Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA, IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA;
0 голосов
/ 14 июля 2020

Вы не используете функции агрегирования, поэтому select distinct проще.

Затем, если вы хотите обрабатывать значения NULL как 0, вы можете использовать nz():

SELECT DISTINCT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA,
       IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA,
       (nz(B365H, 0) + nz(BWH, 0) + nz(IWH, 0) + nz(LBH, 0) + nz(PSH, 0) + nz(WHH, 0) + nz(VCH, 0))/7 AS AvgHome
FROM [Bund];

Если вы хотите игнорировать NULL значения, вам также необходимо обработать знаменатель:

SELECT DISTINCT Date, HomeTeam, AwayTeam, FTR, B365H, B365D, B365A, BWH, BWD, BWA,
       IWH, IWD, IWA, LBH, LBD, LBA, PSH, PSD, PSA, WHH, WHD, WHA, VCH, VCD, VCA,
       (nz(B365H, 0) + nz(BWH, 0) + nz(IWH, 0) + nz(LBH, 0) + nz(PSH, 0) + nz(WHH, 0) + nz(VCH, 0)) /
        (iif(B365H is null, 0, 1) + iif(BWH is null, 0, 1) + iif(IWH is null, 0, 1) + iif(LBH is null, 0, 1) + iif(PSH is null, 0, 1) + iif(WHH is null, 0, 1) + iif(VCH is null, 0, 1))
       )  AS AvgHome
FROM [Bund];
0 голосов
/ 14 июля 2020

Вы можете использовать Is Not Null :

Abs((B365H Is Not Null) + (BWH Is Not Null) + (IWH Is Not Null) + (LBH Is Not Null) + (PSH Is Not Null) + (WHH Is Not Null) + (VCH Is Not Null)) / 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...