2017-04-17 8 views
0

へのクエリからのデータのINSERTこのクエリは動作します...既存のテーブル

SELECT Round(((SELECT Count(*) 
       FROM nps_surveys 
       WHERE score >= 9 
         AND social = 0 
         AND Date(completedon) >= Last_day(CURRENT_DATE) + 
               INTERVAL 1 day 
               - INTERVAL 1 month)/
           (SELECT Count(score) 
           FROM nps_surveys 
           WHERE score IS NOT NULL 
             AND social = 0 
             AND Date(completedon) >= Last_day( 
              CURRENT_DATE) + 
                   INTERVAL 1 day 
                   - 
              INTERVAL 1 month) * 
         100) - ((SELECT Count(*) 
          FROM nps_surveys 
          WHERE score >= 0 
           AND score <= 6 
           AND social = 0 
           AND Date(completedon) >= Last_day(CURRENT_DATE) 
                  + 
                  INTERVAL 1 
                  day 
                  - INTERVAL 1 month)/
             (SELECT Count(score) 
             FROM nps_surveys 
             WHERE score IS NOT NULL 
               AND social = 0 
               AND Date(completedon) >= Last_day( 
                CURRENT_DATE) 
                     + 
                     INTERVAL 
                     1 day 
                     - 
                INTERVAL 1 month) * 
          100)) nps; 

しかし、この1つは...

SELECT cast(round(( 
        ( 
        SELECT Count(*) 
        FROM nps_surveys 
        WHERE score >= 9 
        AND social = 0 
        AND Date(completedon) >= Last_day(CURRENT_DATE) + interval 1 day - interval 1 month)/
        ( 
          SELECT count(score) 
          FROM nps_surveys 
          WHERE score IS NOT NULL 
          AND social = 0 
          AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month)*100) - (
        ( 
         SELECT count(*) 
         FROM nps_surveys 
         WHERE score >=0 
         AND score <= 6 
         AND social = 0 
         AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month)/
        ( 
         SELECT count(score) 
         FROM nps_surveys 
         WHERE score IS NOT NULL 
         AND social = 0 
         AND date(completedon) >= last_day(CURRENT_DATE) + interval 1 day - interval 1 month)*100)) nps; 

私はYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'nps' at line 1で実行しているときにエラーを得続けるが、それはありません唯一の違いはcast機能なので意味がありません。私は上記の既知の作業クエリを私のpythonスクリプトに挿入してみました。castがなく、私にも吠えます。

答えて

0

キャスト関数に対応する閉じ括弧を使用したことはありません。

+0

を取得したいと考えています。 .. 'を閉じていないと、'あなたはSQL構文に誤りがあります。正しい構文については、MySQLサーバのバージョンに対応するマニュアルをチェックして、 'nps'を1行目近くで使用するようにしてください。 –

+0

@JohnFそれは私のポイントです。あなたが 'cast(...')を使って関数呼び出しを実行していることを示しましたが、これはメッセージが示すように構文エラーです。 – EyuelDK

+0

@EyueIDK '' nps); 'のような') 'を追加すると、それでもエラーが返されます。 –

1

あなたはこのような何かにあなたのクエリを簡素化しようとする必要があります

SELECT COUNT(CASE WHEN score >= 9 THEN 1 END) as bigger_9,   
     COUNT(CASE WHEN score >= 0 and score <= 6 THEN 1 END) as between_0_6, 
     COUNT(CASE WHEN score = 0 THEN 1 END) as equal_0, 
     COUNT(score) total_count // Dont need filter NULL, COUNT doesnt count NULL 
FROM table 
WHERE social = 0 
    AND date(completedon) >= last_day(CURRENT_DATE) + 
          interval 1 day - interval 1 month*100 

日付の部分についてはよく分からないが、私は `SELECT CAST(と括弧を開くとあなたのアイデア

関連する問題