Here is another one, using top:
select top 1 *
from (
select top 2 *
from theTable
where lower(name) = 'ram'
order by price desc
) MaxPriceTop2
order by price asc
;
And another one using the OFFSET FETCH clause, MSSqlServer 2012+:
select *
from theTable
where lower(name) = 'ram'
order by price desc
offset 1 rows
fetch next 1 rows only
;