2016-03-04 30 views
1

我在SAS中使用SQL。SQL組按步驟

我正在做一個連續變量(離散)的GROUP BY子句的SQL查詢,我希望它聚合更多。我不確定這是否清楚,所以這裏是一個例子。

這裏是我的查詢:

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. 鴻溝:12.4/5 = 2.48
  2. 的Ceil:2.48變成3
  3. 乘法:3×5 = 15

而在SQL窗體中:

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

謝謝。它幾乎給出了期望的結果,除了每條線重複相同的行程時間(我認爲)的許多值。但是,我發現每個副本只有一行,我建議編輯:)。如果不接受,編輯包括做'GROUP BY time_in_mn'而不是'GROUP BY 5 * CEIL(travel_time/5.0)' –