Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 Что сделать чтобы функция Avg нули не считала?  [new]
Kudryashka
Member

Откуда: Израиль-Москва-Одесса
Сообщений: 29
Нужно сделать запрос в котором при определенном условие в одном столбце должен посчитать сред арифм в трех других, не учитывай ноль (т.е. не считать за строчку в конкретном столбце при подсете). Надеюсь я понятно объяснила проблему
11 окт 06, 13:53    [3247370]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
Allll
Member

Откуда:
Сообщений: 1435
Если я правильно понял объяснение :)

SELECT Avg(Таблица1.N) AS [Avg-N]
FROM Таблица1
HAVING (((Таблица1.N)<>0));
11 окт 06, 14:03    [3247460]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
WhiteNoise
Member

Откуда:
Сообщений: 100
Я так понял, что среднее арифметическое надо считать столбцов, а не строк.
Тогда
[Поле1] [Поле2] [Поле3]
([Поле1] + [Поле2] + [Поле3])/(IIF([Поле1]<>0;1;0)+IIF([Поле2]<>0;1;0)+IIF([Поле3]<>0;1;0) )
Не скажу, что очень красиво. Но работь далжно нормально.
11 окт 06, 14:05    [3247488]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
Kudryashka
Member

Откуда: Израиль-Москва-Одесса
Сообщений: 29
да но ведь у меня table.p (в котором я пишу условие) и еще table.n1, table.n2 , table.n3 и для каждого по отдельности нужно высчитать не учитывая в каждом из них (столбцов). Кажется так :-)
11 окт 06, 14:09    [3247523]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
WhiteNoise
Member

Откуда:
Сообщений: 100
Угу, теперь более понятно, что бы в поле не считала средние:
А:Avg(IIf(table.n1=0;Null;table.n1))
B:Avg(IIf(table.n2=0;Null;table.n2))
C:Avg(IIf(table.n3=0;Null;table.n3))
И совсем среднее поле, при этом тоже не учитывающее нули:
AvgABC:(([A] + [B] + [C])/(IIF([A]<>0;1;0)+IIF([B]<>0;1;0)+IIF([C]<>0;1;0) ))
Можешь не писать отдельно A,B,C, а запихнуть их сразу в выражение AvgABC
11 окт 06, 14:19    [3247622]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
WhiteNoise
Member

Откуда:
Сообщений: 100
Я всё еще не уверен, что понял правильно, особеено смущает фраза:
Kudryashka
при определенном условие

Туманно как-то
11 окт 06, 14:21    [3247650]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
Kudryashka
Member

Откуда: Израиль-Москва-Одесса
Сообщений: 29
в таблице есть столбец под названием predmet и мне нужны не все строки а только равные, например, матем. это и есть условие. и нужно посчитать как студенты оцениваютя этот предмет по 5 параметрам (вопросам). при этом ноль означает что они не хотят вообще отвечать на этот вопрос. соответственно при подсчете среднего мне не надо его учитывать
11 окт 06, 14:31    [3247732]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
Kudryashka
Member

Откуда: Израиль-Москва-Одесса
Сообщений: 29
фантастика. работает. оказывается все так просто. спасибо. я сделала A B C.
Нужны были только три строчки. среднее арифм от них не надо. Спасибо
11 окт 06, 14:42    [3247814]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
WhiteNoise
Member

Откуда:
Сообщений: 100
Kudryashka
predmet и мне нужны не все строки а только равные, например, матем.

Значит нужно группировать по предмету: Тогда вот
SELECT table.predmet, Nz(Avg(IIf([table].[n1]=0,Null,[table].[n1])),0) AS AngN1, 
Nz(Avg(IIf([table].[n2]=0,Null,[table].[n2])),0) AS AngN2, 
Nz(Avg(IIf([table].[n3]=0,Null,[table].[n3])),0) AS AngN3,
 (([AngN1]+[AngN2]+[AngN3])/(IIf([AngN1]<>0,1,0)+IIf([AngN2]<>0,1,0)+IIf([AngN3]<>0,1,0))) AS AvgN1N2N3
FROM [table]
GROUP BY table.predmet;
11 окт 06, 14:54    [3247899]     Ответить | Цитировать Сообщить модератору
 Re: Что сделать чтобы функция Avg нули не считала?  [new]
WhiteNoise
Member

Откуда:
Сообщений: 100
Ага, уже всё заработало. Не успел увидеть.
11 окт 06, 14:54    [3247904]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить