Fra*_* M. 1 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)
Run Code Online (Sandbox Code Playgroud)
这将为我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
Run Code Online (Sandbox Code Playgroud)
(当然,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 的“分步教程”......)
“天花板到台阶”(或四舍五入或地板,就此而言)的常见习语是除以台阶、天花板(或圆形或地板,当然),然后再乘以它。这样,如果我们以 12.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)
Run Code Online (Sandbox Code Playgroud)