2016-03-04 5 views
1

Я использую 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 ...)

ответ

4

Общий идиома «потолок к ступенькам» (или округление, или полы, если на то пошло) состоит в том, чтобы разделить шаг, пол (или круглый, или пол, конечно), а затем снова умножить на него. Таким образом, если мы возьмем, к примеру, 12,4:

  1. Divide: 12,4/5 = 2,48
  2. Ceil: 2,48 становится 3
  3. Multiply: 3 * 5 = 15

И в форме буквы:

SELECT 5 * CEIL(travel_time/5.0) AS time_in_mn, 
     MEAN(foo) AS mean_foo 
FROM  my_table 
GROUP BY 5 * CEIL(travel_time/5.0) 
+0

Thank you. Это почти дает желаемый результат, за исключением того факта, что каждая строка повторяется одинаково для количества значений travel_time, которые есть (я думаю). Тем не менее, я нашел, как иметь только одну строку для каждого дубликата, я предложил изменить :). В случае, если это не принято, редактирование состоит из выполнения команды GROUP BY time_in_mn вместо 'GROUP BY 5 * CEIL (travel_time/5.0)' –

 Смежные вопросы

  • Нет связанных вопросов^_^