又是一个有难度的有关问题

又是一个有难度的问题案例情况:select * fro

又是一个有难度的问题
案例情况:
==========================================================
select * from t;

c1c2c3c4
1012010065.00100.00
1012010016.00120.00
1012010037.00180.00
1022010062.00100.00
1022010018.00120.00
10220090311.00190.00
1022010053.00130.00
10220100219.00210.00

说明:t表有4000W+条数据
请用效率最高的sql语句取出
每个c1最小c2时的记录比如

c1c2c3c4
101201001       6.00120.00
102200903       11.00        190.00
==========================================================
本人水平有限,下面的语句报语法错误,说rule子句聚合函数用法不当
select c1,c2,c3,c4
from
(select /*+ parallel(a,4)*/
c1,c2,c3,c4
from t) b
model
return updated rows
partition by(c1)
dimension by (c2)
measures(c3,c4)
rules(c3[any]=c3[min(c2)],
c4[any]=c4[min(c2)]);

求高人指点
[最优解释]
需要这么复杂吗
又不涉及跨行引用
为什么要用model子句

直接用分析函数排下序就行
select *
from
(
select a.*,row_number() over(partition by c1 order by c2)rn 
from t
)
where rn=1
;
[其他解释]
额 对啊
看来是我自己想复杂啦
[其他解释]
如果一定要使用model子句的话应该怎么写呢
经测试,2楼提供方法的执行计划还可以,但由于有order by排序
效率依然有些影响
求正确的model子句写法