# #sql #google-bigquery
Вопрос:
Я агрегировал таблицу с несколькими значениями для каждого дня в медианы, сгруппированные в день.
Дата | ID | Доход |
---|---|---|
2021-07-11 | 1 | 1 |
2021-07-11 | 2 | 5 |
2021-07-12 | 1 | 12 |
2021-07-12 | 2 | 17 |
До сих пор этот запрос делал свою работу за меня:
SELECT
Bike.date date,
PERCENTILE_DISC( IFNULL(Bike.NetB2CRevenue, 0), 0.5 ) OVER(PARTITION BY Bike.date )
AS MedianRevenuePer,
FROM #Table as Bike
Должен вернуться:
Дата | МедианРевенуеПер |
---|---|
2021-07-11 | 3 |
2021-07-12 | 14.5 |
Вместо этого он возвращается:
Дата | МедианРевенуеПер |
---|---|
2021-07-11 | 3 |
2021-07-11 | 3 |
2021-07-12 | 14.5 |
2021-07-12 | 14.5 |
Теперь я знаю, что своего рода «Группа по 2» может решить проблему, но в данном случае это неприменимо, так как это часть более крупного запроса.
Какие еще методы я могу использовать, кроме «Группирования»?
Ответ №1:
Воспользуйся SELECT DISTINCT
:
SELECT DISTINCT b.date date,
PERCENTILE_DISC( COALESCE(b.NetB2CRevenue, 0), 0.5 ) OVER (PARTITION BY Bike.date) AS MedianRevenuePer,
FROM #Table b;