У меня есть следующие данные в моей таблице:Среднее и медиана в одном запросе в Sql Server 2012
SELECT category, value FROM test
| category | value | +----------+-------+ | 1 | 1 | | 1 | 3 | | 1 | 4 | | 1 | 8 |
Прямо сейчас я использую два отдельных запросов.
Чтобы получить среднее:
SELECT category, avg(value) as Average FROM test GROUP BY category
| category | value | +----------+-------+ | 1 | 4 |
Чтобы получить медиану:
SELECT DISTINCT category, PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY value) OVER (partition BY category) AS Median FROM test
| category | value | +----------+-------+ | 1 | 3.5 |
Есть ли способ объединить их в один запрос?
Примечание: Я знаю, что я также могу получить медиану с двумя подзапросами, но я предпочитаю использовать функцию PERCENTILE_CONT для ее получения.
еще должны GROUP BY категории в конце для функции AVG. –
Сложнее выглядит предыдущий ответ ... Отличается ли этот подход лучшей работой? –
Он также возвращает неверный ответ (3 для набора данных выше, а не 3.5) –