网点发展统计报表sql(oracle)
2013-02-20 16:43
295 查看
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
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
相关文章推荐
- 渠道发展统计报表sql(oracle)
- 产品统计报表的sql(oracle)
- oracle sql语句根据交易类型生成统计报表...
- 用SQL实现统计报表中的“小计”和“合计”
- Oracle EBS 统计我们客制的报表
- 【sql】oracle运维之rman备份情况统计
- oracle 3个实用统计sql场景
- oracle的按月统计sql(一个数据库面试题)
- 用SQL实现统计报表中的“小计”和“合计”
- Oracle EBS-SQL (SYS-17):查询一张报表在哪个职责下面.sql
- 办公系统Oracle数据库监控、统计常用SQL语句
- oracle统计sql的使用之grouping_id
- oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息
- SQL分段统计数据报表
- oracle之 v$sql_monitor 监视正在运行的SQL语句的统计信息
- 有时候执行的oracle,sql语句要查看下性能情况,可以用这个进行下简单计算和统计
- 报表统计 一年每月数据sql
- oracle sql 按日,周,月,年统计
- SQL 统计报表的实现