0

次のコードを検討してください。現在、タグ.cfm内のページに次のコードがあります。<body>

DataSource = xx.xx.x.xx
Name of the database = sgemail
Name of the relevant column = event_vc 

基本的に、次のクエリで開いている接続の割合を計算しました。

<cfquery datasource = "xx.xx.x.xx" name="qSen">

SELECT (select count(*) 
        FROM sgemail) AS TOTAL_CONNECTIONS,
        (SELECT count(*) 
        FROM sgemail 
        WHERE event_vc = "open") AS OPEN_CONNECTIONS,
        (ROUND((SELECT OPEN_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "% OPEN" ;
</cfquery>


<cfquery datasource = "xx.xx.x.xx" name="qSen">

SELECT (select count(*) from sgemail) AS TOTAL_CONNECTIONS,
(SELECT count(*) from sgemail where event_vc = "BOUNCE") AS BOUNCE_CONNECTIONS,
(ROUND((SELECT BOUNCE_CONNECTIONS / (TOTAL_CONNECTIONS))*100)) AS "% BOUNCE" ;
</cfquery>

基本的"% OPEN"に、「% BOUNCE」は、開いている接続とデータベースからのバウンスの割合を表示するために使用されます。

<cfchart>次のように、上記のタグの下に次のタグを含めました<cfquery>

<cfchart
         format="png"
         scalefrom="0"
         scaleto="1200000"
         pieslicestyle="solid">

         <cfchartseries
          type="pie"
          serieslabel="Website Traffic 2006"
          seriescolor="blue"
          query = "qSengrid"
          valuecolumn="% OPEN"

          itemcolumn=""
          >

    </cfchartseries>
</cfchart>

私の質問:

1) 問題は、上のチャートには黄色の円が 1 つしか表示されていないことです。両方のクエリで取得した情報を 1 つのグラフに表示したいと考えています。たとえば、取得している%OPEN値は 30 で、取得している値%Bounceは 20 です。円グラフ全体を 100 にするさまざまな値を返す他のクエリもありますが、目的のために 2 つの cfqueries のみを含めました。この質問の簡単さ。今後の進め方を教えてください。

2) また、2 番目のクエリ (値を取得している場所) をコメントアウトすると、円グラフの円の横に% Bounce値が表示されます。%OPENただし、<cfchart>上記のクエリを 1 つだけ ( を使用してvaluecolumn = %OPEN) 両方実行すると、円の横に値が表示されません。

上記の質問にお答えいただき、お答えできる質問があればお知らせください。

4

2 に答える 2

1

ColdFusion についてはわかりませんが、% Openとの% Bounce値が同じ結果セットに取り込まれることが問題のようです。マークアップの例に基づいて、結果は次のようになる必要があると思います (列名を作成しました)。

theitem   thevalue
--------- --------
% OPEN          40
% BOUNCE        23

次に、マークアップは<cfcchart>次のようになります。

<cfchartseries
      type="pie"
      serieslabel="Website Traffic 2006"
      seriescolor="blue"
      query = "qSengrid"
      valuecolumn="thevalue"
      itemcolumn="theitem"
>

その場合 (他の誰も回答をまだ投稿していないため、ここでは推測していることを思い出してください)、付随するクエリは次のようになります。

SELECT
  CONCAT('% ', UPPER(sgemail.event_vc)) AS theitem,
  COUNT(*) / tots.totconn AS thevalue
FROM
  sgemail,
  (SELECT COUNT(*) AS totconn
   FROM sgemail
   WHERE event_vc IN ('open', 'bounce')) tots
WHERE tots.totconn <> 0
  AND sgemail.event_vc IN ('open', 'bounce')
GROUP BY CONCAT('% ', UPPER(sgemail.event_vc))

クエリは、値のサブセットのパーセンテージを計算しているため、少し複雑event_vcです。さらに、ゼロ除算エラーを防止しています。グラフが単純なカウントを取得してパーセンテージに変換できる場合、「カウントのみ」のクエリははるかに簡単になります。

SELECT
  CONCAT('% ', UPPER(sgemail.event_vc)) AS theitem,
  COUNT(*) / tots.totconn AS thevalue
FROM sgemail
WHERE sgemail.event_vc IN ('open', 'bounce')
GROUP BY CONCAT('% ', UPPER(sgemail.event_vc))
于 2013-07-01T18:49:12.450 に答える