请教这样怎么排序
高手帮忙看段SQL,取前20名问题
这个报表是“损失率较小的前20名”,另外,所取的表的数据量现在大概有10W行
报表的结构是这样的
id 本月供电量 本月售电量 上月供电量 上月售电量
表结构是这样的
id
gdl 供电量
sdl 售电量
rq 日期(格式为200808)
我写到如下就不知道该怎么往下写了,假设统计的日期为200808
select
id,
sum(decode(rq,200808,gdl,0)) 本月供,
sum(decode(rq,200808,sdl,0)) 本月售,
sum(decode(rq,200807,gdl,0)) 上月供, --这里图简单直接写出了200807,实际是用了add_months
sum(decode(rq,200807,sdl,0)) 上月售
from table
group by id
下面不知道怎么排序了,损失率=(供-售)/供, 按本月的排序。取前20名
------解决方案--------------------
select *
SQL code
from(
select
id,
sum(decode(rq,200808,gdl,0)) 本月供,
sum(decode(rq,200808,sdl,0)) 本月售,
sum(decode(rq,200807,gdl,0)) 上月供,
sum(decode(rq,200807,sdl,0)) 上月售,
round((sum(decode(rq,200808,gdl,0)) -sum(decode(rq,200808,sdl,0)) )/sum(decode(rq,200808,gdl,0)),4) loss_rate
from table
group by id
order by 6 desc
)
where rownum<=20