Я использую SQL в SAS.SQL group by steps
Я делаю SQL-запрос с предложением GROUP BY для непрерывной переменной (сделанной дискретной), и я бы хотел, чтобы она агрегировала больше. Я не уверен, что это ясно, вот пример.
Вот мой запрос:
SELECT CEIL(travel_time) AS time_in_mn, MEAN(foo) AS mean_foo
FROM my_table
GROUP BY CEIL(travel_time)
Это даст мне среднее значение foo
для каждого различного значения travel_time
. Благодаря функции CEIL()
она будет группироваться в минутах, а не секундах (travel_time
может принимать значения, такие как 14.7
(минуты)). Но я хотел бы, чтобы иметь возможность группировать по группам 5 минут, например, так, что у меня есть что-то вроде этого:
time_in_mn mean_foo
5 4.5
10 3.1
15 17.6
20 12
(Конечно, mean(foo)
должно быть сделано в течение всего интервала, поэтому для time_in_mn = 5
, mean_foo
должно быть mean of foo where travel_time in (0,1,2,3,4,5)
)
Как я могу это достичь?
(Извините, если ответ можно найти легко, единственное условие поиска я мог думать о group by step
, что дает мне много «шаг за шагом руководства» о SQL ...)
Thank you. Это почти дает желаемый результат, за исключением того факта, что каждая строка повторяется одинаково для количества значений travel_time, которые есть (я думаю). Тем не менее, я нашел, как иметь только одну строку для каждого дубликата, я предложил изменить :). В случае, если это не принято, редактирование состоит из выполнения команды GROUP BY time_in_mn вместо 'GROUP BY 5 * CEIL (travel_time/5.0)' –