我可以在 Oracle View 中进行复杂的汇总或求和吗?
Can I do complex rollups or sums in Oracle View?
在我的工作中,我需要收集在二十分之一英里范围内收集的一些粒度数据,然后将其汇总到十分之一英里范围内。这个任务是用 python 脚本完成的,但我想知道我是否可以用物化视图来完成它。这是数据最简单形式的示例,以及我希望视图的样子。
最简单的形式:
Route Number
Beginning Mile Post
Ending Mile Post
Route Length
001
0
0.02
105.6
001
0.02
0.04
105.6
001
0.04
0.06
105.6
001
0.06
0.08
105.6
001
0.08
0.10
105.6
001
0.10
0.12
105.6
001
0.12
0.14
105.6
这是我希望视图生成的内容:
Route Number
Beginning Mile Post
Ending Mile Post
Route Length
001
0
0.1
528
001
0.1
0.14
211.2
我尝试过使用汇总、求和、MOD、余数,但不确定如何正确使用它们。
我什至不确定这是否可以通过视图实现。
我会接受所有的建议和想法。
您需要的是在创建视图时使用 TRUNC()
函数,例如
CREATE OR REPLACE VIEW v_Route AS
SELECT Route_Number,
MIN(TRUNC(Beginning_Mile_Post,1)) AS Beginning_Mile_Post,
MAX(Ending_Mile_Post) AS Ending_Mile_Post,
SUM(Route_Length) AS Route_Length
FROM t
GROUP BY Route_Number, TRUNC(Beginning_Mile_Post,1)
在我的工作中,我需要收集在二十分之一英里范围内收集的一些粒度数据,然后将其汇总到十分之一英里范围内。这个任务是用 python 脚本完成的,但我想知道我是否可以用物化视图来完成它。这是数据最简单形式的示例,以及我希望视图的样子。
最简单的形式:
Route Number | Beginning Mile Post | Ending Mile Post | Route Length |
---|---|---|---|
001 | 0 | 0.02 | 105.6 |
001 | 0.02 | 0.04 | 105.6 |
001 | 0.04 | 0.06 | 105.6 |
001 | 0.06 | 0.08 | 105.6 |
001 | 0.08 | 0.10 | 105.6 |
001 | 0.10 | 0.12 | 105.6 |
001 | 0.12 | 0.14 | 105.6 |
这是我希望视图生成的内容:
Route Number | Beginning Mile Post | Ending Mile Post | Route Length |
---|---|---|---|
001 | 0 | 0.1 | 528 |
001 | 0.1 | 0.14 | 211.2 |
我尝试过使用汇总、求和、MOD、余数,但不确定如何正确使用它们。 我什至不确定这是否可以通过视图实现。
我会接受所有的建议和想法。
您需要的是在创建视图时使用 TRUNC()
函数,例如
CREATE OR REPLACE VIEW v_Route AS
SELECT Route_Number,
MIN(TRUNC(Beginning_Mile_Post,1)) AS Beginning_Mile_Post,
MAX(Ending_Mile_Post) AS Ending_Mile_Post,
SUM(Route_Length) AS Route_Length
FROM t
GROUP BY Route_Number, TRUNC(Beginning_Mile_Post,1)