三次元のデ-タのfustionchartの上の統計は分析します.

4086 ワード

ここ数日は何をしていますか?三次元のデータ展示の問題に遭遇して、気がふさいでいます.一番目はGISの図表の展示をしています.出会ったのは各政区の中で、各統計指標項目の数量図を展示しています.二つ目はその中の各政区の企業の業務審査通過を調べて、不合格と審査の中で、一時的に保存します.5つの状態を採集し直します.中には関連表もあります.また一部の政区の上にはその中の5つの状態のデータがないので、やはり0で表示します.最初に見た時はこの業務が大きくなりました.分析してみたら難しくないと思いました.その後sqlを書き始めました.状態のグループ、政区のグループ関連などを通じて書き終わりました.書き上げたデータは様々な状態で一行の記録形式があります.そして一部の状態では企業がないとデータがないので、書き方が悪いと思いますが、統計が取れないと絵が描けないと思います.だから、javaコードを書き始めました.いくら書いても、想像したようなものではなく、いくつかの論理処理によって処理できます.歩けないことが分かりました.だからしょうがないです.sqlを書き直します.ついにsum+caseの方法により、5つの状態を一つの記録に表示し、右外連結の形ですべての政区を表示しました.これでいいです.これからはフュージョンチャートを作ってもいいです.

 select t2.*, t1.* from 
(select t.street ,count(*) as sum
,sum(case t.state when 'y' then 1 else 0 end) as sumy
,sum(case t.state when 'n' then 1 else 0 end) as sumn
,sum(case t.state when '0' then 1 else 0 end) as sum0
,sum(case t.state when '1' then 1 else 0 end) as sum1
,sum(case t.state when '2' then 1 else 0 end) as sum2
from C_YGDW_CAIJI t group by  t.street) t1 --,   --t1             ,    id 
 RIGHT  JOIN                               --    
(select d.deptid as deptid,d.displayname as deptname
  from buffalo_org_departments d
 where d.deptid in (select t.memberid
                    from buffalo_org_groupmembers t
                   where t.groupid = '5') 
                   --and d.deptid in (14,15,26)          ID   
                   ) t2   --          id       
                   ON  t1.street = to_char(t2.deptid) --      ID    ID          
javaコードでは以下のように処理されます.

 FCTitle.append("<?xml version='1.0' encoding=\'UTF-8\'?><chart palette='0' baseFont='  ' baseFontSize='12' caption='       、      '  xaxisName='    ' yAxisName='        ' useRoundEdges='1' shownames='1' showvalues='0' showSum='1' legendBorderAlpha='0' formatNumberScale='0'>");
			
			StringBuffer categories= new StringBuffer().append("<categories>");
			StringBuffer dataset_1= new StringBuffer().append("<dataset seriesname='   ' color='8BBA00'>");
			StringBuffer dataset_Y= new StringBuffer().append("<dataset seriesname='    ' color='A66EDD' >");
			StringBuffer dataset_N= new StringBuffer().append("<dataset seriesname='     ' color='F984A1'>");

			String sum1="";
			String sumY="";
			String sumN="";
			while(rs.next()){
				
				sum1=rs.getString("sum1");
				sumY=rs.getString("sumy");
				sumN=rs.getString("sumn");
				sum1=sum1==null?"0":sum1;
				sumY=sumY==null?"0":sumY;
				sumN=sumN==null?"0":sumN;
			    categories.append("<category label='"+rs.getString("deptname")+"' />");
			    
			    dataset_1.append("<set value='"+sum1+"' link='javascript:entinfo(1,"+rs.getString("deptid")+")'/>");
				
			    dataset_Y.append("<set value='"+sumY+"' link='javascript:entinfo(2,"+rs.getString("deptid")+")'/>");
				
			    dataset_N.append("<set value='"+sumN+"' link='javascript:entinfo(3,"+rs.getString("deptid")+")'/>");
				
			}
			categories.append("</categories>");
			
			dataset_1.append("</dataset>");
			
			dataset_Y.append("</dataset>");
			
			dataset_N.append("</dataset>");
			
			FCTitle.append(categories).append(dataset_1).append(dataset_Y).append(dataset_N);
			FCTitle.append("</chart>");

表示効果は下図のようになります.