SQL组的步骤

时间:2016-03-04 09:50:10

标签: sql select group-by ceil

我在SAS中使用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 = 5mean_foo应该是mean of foo where travel_time in (0,1,2,3,4,5)

我怎样才能做到这一点?

(很抱歉,如果能够轻松找到答案,我能想到的唯一搜索词是group by step,这给了我很多关于SQL的“一步一步的教程”......)

1 个答案:

答案 0 :(得分:4)

一个常见的习惯用法"上限为步骤" (或圆形,或地板,就此而言)是按步骤,ceil(或当然是圆形或地板)除以然后再乘以它。这样,如果我们采取例如12.4:

  1. 除以:12.4 / 5 = 2.48
  2. Ceil:2.48变为3
  3. 乘以:3 * 5 = 15
  4. 以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)