谁来帮忙解决一下这个统计问题~

s_wyp 2014-01-23 02:27:41
130万数据
select
gridid,
count(gridid)c1,
sum(case when rknum>10 then 1 when roomuser=158 and rknum>0 then 1 when (roomuser in(156,157) and rknum=0 ) then 1 else 0 end)c2
from(
select roomid,gridid,roomuser,
(select count(1)from r_residents where roomid=s.roomid and islogout=1 and isvalid=1 and not exists(select roomid from U_RKFW_HS where roomid=s.roomid and HSSTYLE='HRKJC'))rknum
from s_rooms s where s.isvalid=1 and s.gridid like p_gridid||'%')group by gridid;
----------------------------------------------------------------------------------------------
select t.gridid,
count(hrk) c1,
sum(case when hrk>5 then 1 else 0 end)c2 from s_rooms t right join
(
SELECT a.roomid,a.hrk
FROM ( select s.roomid,count(s.fhost) over(partition by s.fhost) as hrk from r_residents s
where s.isvalid=1 and s.islogout=1 and not exists(select roomid from u_rkfw_hs where roomid=s.roomid and HSSTYLE='RHRKGD')) a,
(SELECT MIN(b.ROWID) row_id
FROM ( select s.roomid,count(s.fhost) over(partition by s.fhost) as hrk from r_residents s
where s.isvalid=1 and s.islogout=1and not exists(select roomid from u_rkfw_hs where roomid=s.roomid and HSSTYLE='RHRKGD')) b
GROUP BY b.roomid) b
WHERE a.ROWID = b.ROW_id )s on s.roomid= t.roomid
where isvalid=1 and gridid like p_gridid||'%'


--求高手帮忙优化~
...全文
102 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧