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

Откуда:
Сообщений: 1450
Есть таблица, куда сохраняются данные:
-количество
-цена
-статус(купля или продажа)

Нужно подсчитать среднее, но:
-если купля, то всё просто количество*цена=стоимость
-если продажа, то количество*предыщиее значение Average

Пример:

Купили 100*25=2500 => Ave=2500/100=25
Купили 50*30=1500 => Ave=2500+1500/100+50=26.66
Продали 20*26,66=533,2 => Ave=2500+1500-533.2/100+50-20=3466.8/130=26.66

Не получается всё в одном запросе, а как?
15 май 14, 23:06    [16024205]     Ответить | Цитировать Сообщить модератору
 Re: Average, как подсчитать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
wpf2013
Не получается всё в одном запросе, а как?

Партиционный учет по средневзвешенной цене что ли ?
15 май 14, 23:08    [16024215]     Ответить | Цитировать Сообщить модератору
 Re: Average, как подсчитать?  [new]
wpf2013
Member [заблокирован]

Откуда:
Сообщений: 1450
Glory
Партиционный учет по средневзвешенной цене что ли ?


Да как его не называй....но чтобы подсчитать сумму, надо знать среднее от предыдущего, а чтобы подсчитать среднее, надо знать сумму...и круг замкнулся.
15 май 14, 23:30    [16024335]     Ответить | Цитировать Сообщить модератору
 Re: Average, как подсчитать?  [new]
_human
Member

Откуда:
Сообщений: 560
wpf2013,
похоже на нарастающие итоги.
если версия сервера позволяет, то используйте оконные ф-ии.

Напишите запрос к представлению Sales.OrderValues, который возвращает для
каждого клиента и заказа значение скользящего среднего для трех последних за-
казов клиента.
Ваше решение должно быть подобно следующему запросу:
SELECT custid, orderid, orderdate, val,
AVG(val) OVER(PARTITION BY custid
ORDER BY orderdate, orderid
ROWS BETWEEN 2 PRECEDING
AND CURRENT ROW) AS movingavg
FROM Sales.OrderValues;
16 май 14, 10:41    [16025606]     Ответить | Цитировать Сообщить модератору
 Re: Average, как подсчитать?  [new]
_human
Member

Откуда:
Сообщений: 560
wpf2013,

p.s. лучше всего сначала почитать п.№6.
16 май 14, 10:42    [16025629]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить