当前位置: 代码迷 >> Oracle开发 >> 请问这样如何排序
  详细解决方案

请问这样如何排序

热度:64   发布时间:2016-04-24 07:36:42.0
请教这样怎么排序
高手帮忙看段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
  相关解决方案