81,114
社区成员
发帖
与我相关
我的任务
分享select ips.name,count(ip) from IP ip right join ip.source ips group by ips.id select distinct ips.name,
count(*) over(partition by ips.ip) all_count,
sum(decode(ip.status, 0, 0, 1)) count1,
sum(decode(ip.status, 1, 0, 1)) count2
from table_ips ips, table_ip ip
where ip.id = ips.ipid
String sql = "select distinct a.totalIPs,b.assignedIPs,c.unassignedIPs, s.SOURCE_NAME from" +
" (select i1.SOURCE_ID, count(*) as totalIPs from IP as i1 group by i1.SOURCE_ID) as a,"+
" (select i2.SOURCE_ID, count(*) as assignedIPs from IP as i2 where i2.IP_STATUS=1 group by i2.SOURCE_ID) as b," +
" (select i3.SOURCE_ID, count(*) as unassignedIPs from IP as i3 where i3.IP_STATUS=0 group by i3.SOURCE_ID) as c, Source as s";
List<Object[]> list = session.createSQLQuery(sql).list();
for(Object[] objArray : list){
System.out.println(objArray[0]);
System.out.println(objArray[1]);
System.out.println(objArray[2]);
System.out.println(objArray[3]);
}
select a.cid1, a.cname, a.totalIPs,b.unassignedIPs,c.assignedIPs from
(select c1.id as cid1, c1.name as cname, count(ip1.id) as totalIPs
from ip as ip1 right join ip_source as ips1 on ip1.source_id=ips1.id right join ip_record_company as c1 on ips1.company_id=c1.id
group by c1.id) as a
left join
(select c2.id as cid2, count(ip2.id) as unassignedIPs
from ip as ip2 right join ip_source ips2 on ip2.source_id=ips2.id right join ip_record_company c2 on ips2.company_id = c2.id
where ip2.status=0 group by c2.id) as b
on a.cid1=b.cid2 left join
(select c3.id as cid3, count(ip3.id) as assignedIPs
from ip as ip3 right join ip_source ips3 on ip3.source_id=ips3.id right join ip_record_company c3 on ips3.company_id = c3.id
where ip3.status in(1,2,3) group by c3.id) as c
on b.cid2=c.cid3