2016-06-29 4 views
-1

私はクエリのクエリを使用してグラフを作成しようとしていますが、何を試しても500のエラーが発生しています。問題としてcfchartタグのスコープを終了しましたが、構文エラーや論理エラーが見つかりませんでした。CFChartが500エラーを生成しました

<cfquery name="getData" datasource="#dsn#"> 
    SELECT 
      (SELECT Count(UserID) 
      FROM Users 
      WHERE StripeCustomerID IS NOT NULL 
     ) AS 'Licenses' 
      , COUNT(UserID) AS 'Registrations' 
      , UserID AS 'User' 
    FROM Users 
    WHERE DATEDIFF(hour, FirstContact, DateStamp) <= '12' 
    GROUP BY UserID 
</cfquery> 

<cfquery name="queryOfQuery" dbtype="query"> 
    SELECT (Licenses/Registrations) AS Percent FROM getData 
</cfquery> 


<cfchart format="flash"> 
    <cfchartseries type="bar" 
     query="queryOfQuery" 
     itemcolumn="UserID" 
     valuecolumn="Percent" /> 
</cfchart> 

サンプルデータ

Users Table Sample Data 
UserID StripeCustomerID 
35   cus_8LOSlmvEQcfg1g 
36   cus_6ixCBe7aU1MJEt 
50   NULL 
60   cus_6ifLCNmR9rOBCl 
69   NULL 
70   NULL 
72   NULL 
73   NULL 
74   NULL 
+0

あなたは 'itemcolumn =「ユーザーID」を'指定ができますが、私たちに500エラーを与えていないだろう、あなたの 'queryOfQuery'クエリ – duncan

+0

(EDIT)内の列のユーザーIDを持っていない、代わりに私たちは、サーバーエラーメールを持っていますその場合は私たちに送ってください。それは後で問題になるかもしれませんが、修正するのは簡単でしょう。 –

+0

本当に...本当ですか? – duncan

答えて

2

あなたの構文の問題は、SQLエンジンを知ることができるように括弧や単一引用符を追加する必要があるので、

SELECT (Licenses/Registrations) AS Percent FROM getData 

パーセントは予約キーワードであります予約されたキーワードを列別名として使用しています。

SELECT (Licenses/Registrations) AS [Percent] FROM getData 

OR

SELECT (Licenses/Registrations) AS 'Percent' FROM getData 

あなたは簡単に元のデータセットにパーセント列を追加することができます。

SELECT 
    (SELECT Count(UserID) FROM Users WHERE StripeCustomerID IS NOT NULL)  AS  Licenses, 
    COUNT(UserID) AS Registrations, 
    (SELECT Count(UserID) FROM Users WHERE StripeCustomerID IS NOT NULL)/COUNT(UserID) AS [Percent], 
    UserID AS User 
FROM Users 
WHERE DATEDIFF(hour, FirstContact, DateStamp) <= '12' 
GROUP BY UserID 

さらに、ライセンスに必要なものが何か不思議です。 DISTINCT UserIdcountまたはcountのすべてをnon null UserIdsにしようとしていますか?あなたのクエリの残りの部分は、USerIdが自分自身をUsersテーブル(これは私が非常に奇妙です)で繰り返すことを示唆しています...だからUserId 5は2,3回存在する可能性があるので、distinctを数えれば、あなたは2または3 ...

ですregistrationsいつも1ですか?その場合は、UserIdがユニークで、メインクエリに集計はまったく必要ありません。パーセントの答えは、常に1 /ライセンス数と同じになります。.......

これはあなたが望むクエリのようです。

SELECT 
    COUNT(UserId) AS Registrations 
    ,SUM(CASE WHEN StripeCustomerId IS NOT NULL THEN 1 ELSE 0 END) AS Licenses 
    ,CASE 
     WHEN SUM(CASE WHEN StripeCustomerId IS NOT NULL THEN 1 ELSE 0 END) = 0 THEN 0 
     ELSE COUNT(UserId)/SUM(CASE WHEN StripeCustomerId IS NOT NULL THEN 1 ELSE 0 END) 
    END AS [Percent] 
FROM 
    Users 
WHERE DATEDIFF(hour, FirstContact, DateStamp) <= '12' 
+0

私はすべての非ヌルUserIDsの数を取得したいと思っていました。Distinct UserIDは、複数のライセンスを購入した人が複数回表示されないようにするためのものです。このクエリはうまくいきました。助けてくれてありがとう! –

+0

それはあなたのために働いてうれしいです答えを受け入れるように他の人は質問が答えられていることを知っている。ありがとう。 http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work – Matt

+0

実際にはもう1つ、あなたが私に与えた質問は正しく分割されていません。ライセンスとパーセントは同じです値はそれが印刷された –

関連する問題