Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.05.10;
Скачать: CL | DM;

Вниз

Как работает AVG()   Найти похожие ветки 

 
Mike Kouzmine   (2008-09-04 12:16) [0]

Суть :
Выдать среднее по месяцам продож товара (GRUP, NNUM) за предыдущие месяца (не включая текущий).
Если месяц до марта включительно, то учитывать предыдущий год и месяца текущего, кроме текущего месяца.

Писал по так

IF (MNTH < 3) THEN
   BEGIN
     SELECT AVG(SELECT EXTRACT(MONTH FROM SALES.DATE_OPER),SUM(SALES.KOLOUT) FROM SALES
       WHERE SALES.GRUP = :GRUP AND
           SALES.NNUM = :NNUM AND
           EXTRACT(YEAR FROM SALES.DATE_OPER) = :YR - 1 AND
     GROUP BY 1) FROM SALES
      INTO :KOL;
     SELECT AVG(SELECT EXTRACT(MONTH FROM SALES.DATE_OPER),SUM(SALES.KOLOUT) FROM SALES
       WHERE SALES.GRUP = :GRUP AND
           SALES.NNUM = :NNUM AND
           EXTRACT(YEAR FROM SALES.DATE_OPER) = :YR AND
           GROUP BY 1) FROM SALES
      INTO :KOL_OUT;
     IF (KOL IS NULL) THEN KOL = 0;
     KOL_OUT = KOL_OUT + KOL;
   END
 ELSE

 и так :

   BEGIN
     SELECT EXTRACT(MONTH FROM SALES.DATE_OPER), AVG(SALES.KOLOUT) FROM SALES
     WHERE SALES.GRUP = :GRUP AND
           SALES.NNUM = :NNUM AND
           EXTRACT(YEAR FROM SALES.DATE_OPER) = :YR AND
           EXTRACT(MONTH FROM SALES.DATE_OPER) < :MNTH
     GROUP BY 1 INTO :M, :KOL_OUT;
   END
 SUSPEND;
END

Первый if ругается на селект в AVG()
else тупо дает количество проданного за месяц (тестировал на товаре, продажа которого была 1 раз за год)
Селект в AVG() - эксперимент


 
Правильный$Вася   (2008-09-04 12:34) [1]

avg имеет ОДИН параметр
и дает среднее ПО ЗАПИСЯМ, а не по каким-то там месяцам


 
Mike Kouzmine   (2008-09-04 12:38) [2]

Правильный$Вася   (04.09.08 12:34) [1] Спасибо за четкий ответ. Очень помог.
Теперь помоги, раз так хорошо все знаешь, как быть в той ситуации, которую я описал выше. Как получить среднемесячное количество проданного товара за год.


 
Правильный$Вася   (2008-09-04 12:43) [3]


>  Как получить среднемесячное количество проданного товара
> за год.

в [0] у тебя не год, а то год, то год с плюсом
и что тебе нужно получить, если в какие-то месяцы подаж не было


 
Mike Kouzmine   (2008-09-04 12:44) [4]

Или, другими словами, AVG(), в этом случае, бесполезен?


 
Mike Kouzmine   (2008-09-04 12:46) [5]

Правильный$Вася   (04.09.08 12:43) [3] Пример: за год была одна продажа 25 штук товара. Надо получить среднемесячное за год, а именно 25/12 с помощью AVG. Меня интересует - это возможно или надо тупо считать?


 
Правильный$Вася   (2008-09-04 12:48) [6]

это не среднемесячное
это count за период / число месяцев


 
Mike Kouzmine   (2008-09-04 12:53) [7]

Правильный$Вася   (04.09.08 12:48) [6] Мне всегда казалось, что average в математике это среднее(ожидаемое) значение. Видимо я ошибся.


 
Правильный$Вася   (2008-09-04 12:57) [8]

ты так и не сказал, что ты хочешь получить для месяца с нулевыми продажами
судя по твоим попыткам запроса, он игнорируется, но судя по объяснению - должен включаться


 
Виталий Панасенко(дом)   (2008-09-04 13:00) [9]

AVG(VALUE), а у тебя AVG(VALUE1, VALUE)
Буквально так
> AVG(SELECT EXTRACT(MONTH FROM SALES.DATE_OPER),SUM(SALES.
> KOLOUT) FROM SALES


 
Mike Kouzmine   (2008-09-05 08:54) [10]

Виталий Панасенко(дом)   (04.09.08 13:00) [9] Понял, благодарю.



Страницы: 1 вся ветка

Текущий архив: 2009.05.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.011 c
6-1202988792
РВА
2008-02-14 14:33
2009.05.10
Сеть по електропроводке


3-1220449344
мини-кодер
2008-09-03 17:42
2009.05.10
Открытие/закрытие транзакции


3-1220519388
greg123
2008-09-04 13:09
2009.05.10
Можно ли в запросе заменить названия столбцов на их описание?


15-1235736445
Ega23
2009-02-27 15:07
2009.05.10
А может ударим по печени сегодня?


2-1238059456
Alex_Y
2009-03-26 12:24
2009.05.10
Не работает Tab в форме