sql >> データベース >  >> RDS >> PostgreSQL

前の質問の回答に基づいてMCQ回答数を選択します

    modを実行したくない場合は、代わりにquestionIDを選択する必要があります。クロスジョインを使用しました 応答しない他のセグメントを取得します。そしてselectステートメントでは、あなたはケース segmentNameを0にカウントするステートメント。

    SELECT
        bb.name,
        s.name,
        CASE WHEN s.id IN(
            SELECT
                r.segment_id FROM brandlift_respondent r) THEN
            COUNT(q2ac.brand_id)
        ELSE
            0
        END AS CountNumber
    FROM
        brandlift b
        LEFT JOIN brandlift_brand bb ON b.campaign_id = bb.campaign_id
        LEFT JOIN brandlift_respondent r ON b.campaign_id = r.campaign_id
        
        CROSS JOIN brandlift_segment s
        
        LEFT JOIN brandlift_question q1 ON b.campaign_id = q1.campaign_id AND q1.ordinal = 1
        LEFT JOIN brandlift_answer q1a ON r.id = q1a.respondent_id AND q1.id = q1a.question_id
        INNER JOIN brandlift_answer_content q1ac ON q1a.id = q1ac.answer_id AND q1ac.brand_id = 1 -- the "flagship brand" id
            
        LEFT JOIN brandlift_question q2 ON q1.campaign_id = q2.campaign_id AND q2.ordinal = 2
        LEFT JOIN brandlift_answer q2a ON q1a.respondent_id = q2a.respondent_id AND q2.id = q2a.question_id
        LEFT JOIN brandlift_answer_content q2ac ON q2a.id = q2ac.answer_id AND bb.id = q2ac.brand_id
    WHERE
        b.campaign_id = :campaign_id -- parameter
        AND R.segment_id = s.id OR s.id NOT IN(SELECT r.segment_id FROM brandlift_respondent r)
    GROUP BY
        bb.name,
        s.name,
        s.id
    

    結果はそのように表示されます




    1. 間隔で動的な年と月を使用して、連続してゼロを表示するにはどうすればよいですか?

    2. MariaDBでデータベースのサイズを取得する

    3. SQLiteの日付と時刻の関数

    4. MySQLインジェクションの防止