Я пытаюсь вычислить средневзвешенное значение на основе следующих расчетов.Рассчитать средневзвешенное значение в SQL Server
У меня есть набор данных, который выглядит примерно так:
item | Date Sent | Date Received
1 | 2 Feb 10am | 3 Feb 10am
1 | 6 Feb 11am | 6 Feb 12pm
2 | 2 Feb 10am | 3 Feb 10am
2 | 6 Feb 11am | 6 Feb 12pm
то, что нужно, чтобы вычислить среднее значение, основываясь на разнице во времени округляется вниз означает:
Time Diff | Count |
1 | 2 |
12 | 2 |
Так что в этом случае было бы :
1 * 2 + 12 * 2/(12 + 1)
Я уже написал SQL-запрос для вычисления таблицы агрегатов:
select
floor(datediff(hh, dateSent, dateReceived)) as hrs,
count(item) as freq
from
table
group by
floor(datediff(hh, dateSent, dateReceived))
having
floor(datediff(hh, dateSent, dateReceived)) < 100
order by
floor(datediff(hh, dateSent, dateReceived)) asc;
Должен ли я выполнить подзапрос? Я не владею, и я попытался, но продолжаю получать синтаксические ошибки.
Может кто-нибудь помочь мне получить SQL-запрос, чтобы получить средневзвешенное значение?
Я думаю, вы на самом деле хотите сгруппировать по идентификатору таким образом, как это: 'SELECT item, hrs = AVG (DATEDIFF (HOUR, dateSent, dateReceived)), freq = COUNT (*) FROM myTable GROUP BY item HAVING AVG (DATEDIFF (HOUR, dateSent, dateReceived)) <100 ORDER BY 2;' или что-то как это? – ZLK
Я действительно хочу получить средневзвешенное значение, я думал, что это будет часть подзапроса, но мне не удалось это сделать. Почему у вас есть заказ на 2? –
Я не уверен, что вы подразумеваете под «средневзвешенным». Как он «взвешивается»? Кроме того, «порядок на 2» был всего лишь ленивым короткометражным произношением «порядок по второй колонке». – ZLK