Я пытаюсь запустить запрос, который агрегирует данные, группирует результаты по нескольким различным полям и извлекает все соответствующие подстроки «SubTotal». (аналогично CUBE() в MSSQL)Несколько промежуточных итогов - порядок наложения полей
При использовании Group By Rollup()
, я получаю только перестановки в соответствии с порядком полей Group By
в функции Rollup
. Например, запрос ниже (работает в общедоступном наборе данных), он возвращает промежуточный итог по году, или по году и месяцу, или по году, месяцу и медальону ... но он не является промежуточным по медальону.
SELECT
trip_year,
trip_month,
medallion,
SUM(trip_count) AS Sum_trip_count
FROM
[nyc-tlc:yellow.Trips_ByMonth_ByMedallion]
WHERE
medallion IN ("2R76", "8J82", "3B85", "4L79", "5D59", "6H75", "7P60", "8V48", "1H12", "2C69", "2F38", "5Y86", "5j90", "8A75", "8V41", "9J24", "9J55", "1E13", "1J82")
GROUP BY
ROLLUP(trip_year,
trip_month,
medallion)
Мой вопрос: Что я должен сделать для того, чтобы получить все различные перестановки «Sub Итоги» в результате одного запроса.
Уже пробовал: Союз с похожим запросом, но с другим порядком, он работает, но не изящный (для этого потребуется слишком много союзов). Thanks
Соответствует ли этому вопросу вопрос? – Nicholas
Ответ ясен, но это не решает мою проблему. Союз все не вариант. Это требует n! повторения одного и того же запроса. Если у меня 9 полей группировки, wuery становится невозможным mainatain. –
Я согласен, что это решение неэффективно, более сложно поддерживать и может быть дорогостоящим. Обходной путь, который вы предлагаете, в настоящее время является ** единственным ** способом получения агрегатов, которые вы ищете в одном запросе. Следовательно, рекомендуется подать запрос функции. Я обновил свой ответ, чтобы отразить это более четко. – Nicholas