select *
from (select rownum tn,
organise_id
organiseId,
organise_name,
nvl(recommendTotal, 0) recommendTotal,
nvl(recommendSuc, 0)
recommendSuc,
nvl(pointsTotal, 0)
pointsTotal,
decode(nvl(recommendTotal,
0),
0,
0,
recommendSuc / recommendTotal)
sucRate,
decode(nvl(validPoints, 0),
0,
0,
round(recommendSuc /
validPoints, 2)) pointCapacity,
decode(nvl(pointsTotal,
0),
0,
0,
round(validPoints / pointsTotal, 4) * 100)
pointOnline,
nvl(userTotal, 0) userTotal,
nvl(vaildUser, 0) vaildUser,
RANK() OVER(order by
nvl(recommendTotal, 0) desc) as recommendTotalnum,
RANK()
OVER(order by nvl(recommendSuc, 0) desc) as recommendSucnum,
RANK() OVER(order by decode(nvl(recommendTotal, 0), 0, 0, recommendSuc /
recommendTotal) desc) as sucRatenum,
RANK() OVER(order by
decode(nvl(validPoints, 0), 0, 0, round(recommendSuc / validPoints, 2)) desc) as
pointCapacitynum,
RANK() OVER(order by decode(nvl(pointsTotal,
0), 0, 0, round(validPoints / pointsTotal, 4)) desc) as
pointOnlinenum,
nvl(onlinePoints, 0)
onlinePoints,
nvl(validPoints, 0)
validPoints,
nvl(activePoints, 0)
activePoints,
nvl(warnPoints, 0) warnPoints
from
(select o.organise_id,
o.organise_Code,
o.organise_name,
a.pointsTotal,
a.userTotal,
sum(recommendTotal) recommendTotal,
sum(recommendSuc)
recommendSuc,
sum(onlinePoints)
onlinePoints,
sum(vaildUser)
vaildUser,
sum(validPoints)
validPoints,
sum(activePoints)
activePoints,
sum(warnPoints)
warnPoints
from sys_organise_info
o,
(select
o.organise_id,
o.organise_name,
o.organise_code,
count(distinct p.organise_id)
pointsTotal,
count(case
when u.flag = 0
then
u.emp_no
else
null
end)
userTotal
from sys_organise_info
o,
tview_organise_point
p,
sys_user_info
u,
sys_organise_channel
sc
where 1 = 1
and
o.father_id = 1
and instr(p.organise_code,
o.organise_Code) = 1
and p.flag =
0
and p.organise_id =
u.organise_id(+)
and sc.channel_id(+) =
p.channel_type
group by
o.organise_id,
o.organise_name,
o.organise_code)
a,
(select fid,
organise_id,
organise_code,
sum(recommendTotal)
recommendTotal,
sum(recommendSuc)
recommendSuc,
count(distinct
case
when recommendTotal > 0
then
organise_id
else
null
end)
onlinePoints,
sum(vaildUser)
vaildUser,
sum(case
when recommendSuc > 0
then
1
else
0
end)
validPoints,
sum(case
when recommendSuc >= 50
then
1
else
0
end)
activePoints,
sum(case
when
decode(recommendTotal,
0,
0,
recommendSuc /
recommendTotal) <= 0.1 then
1
else
0
end)
warnPoints
from (select
fid,
organise_id,
organise_code,
sum(alls)
recommendTotal,
sum(suc)
recommendSuc,
sum(case
when suc > 0
then
1
else
0
end)
vaildUser
from (select
r.organise_id,
r.organise_code,
o.organise_id
fid,
r.emp_no,
sum(r.recommend_total) alls,
sum(r.open_suc_total) suc
from
stat_recomend_day r,
sys_organise_info o
where 1 =
1
and o.father_id =
1
and
instr(r.organise_code,
o.organise_Code) = 1
group by
o.organise_id,
r.organise_id,
r.organise_code,
r.emp_no)
group by organise_id,
organise_code, fid) t
group by organise_id,
organise_code, fid) b
where 1 = 1
and
o.father_id = 1
and o.organise_id =
a.organise_id(+)
and a.organise_id =
b.fid(+)
and o.flag = '0'
group by
o.organise_id,
o.organise_name,
o.organise_code,
pointsTotal,
userTotal))
order by tn