There are some ways to produce same results by using self join(or essentially equivalent) without ROW_NUMBER().
But, those queries(at least I could make) are more complex and less efficient than using ROW_NUMBER().
Would be the most efficient way. But, I think you are after, even when your C1 column is not numbered sequentially. In that case, I think what you have is the might be the way of going about it. As I write this, causes me to think of something like this as well(completely untested):
$ db2 "select c1, c2 from (select c1, c2 from test t order by c1 asc fetch first 5 rows only) as t order by c1 desc fetch first 1 row only"