fix calculate onchanged answers in ques stats

This commit is contained in:
Pavel 2024-04-05 16:22:11 +03:00
parent cb140aafb3
commit 4305a04063

@ -544,22 +544,44 @@ WITH Funnel AS (
HAVING HAVING
COUNT(*) >= 1 COUNT(*) >= 1
), ),
LastContent AS (
SELECT
a.question_id,
a.content AS last_answer_content
FROM
answer a
JOIN (
SELECT
session,
question_id,
MAX(created_at) AS last_created_at
FROM
answer
WHERE
quiz_id = $1
AND created_at >= TO_TIMESTAMP($2)
AND created_at <= TO_TIMESTAMP($3)
GROUP BY
question_id, session
) AS last_created_at_one_session ON a.session = last_created_at_one_session.session AND a.question_id = last_created_at_one_session.question_id AND a.created_at = last_created_at_one_session.last_created_at
),
Questions AS ( Questions AS (
SELECT SELECT
q.title AS question_title, q.title AS question_title,
a.content AS answer_content, lc.last_answer_content AS answer_content,
CAST( CAST(
COUNT(CASE WHEN a.result = FALSE THEN 1 END) * 100.0 / NULLIF(SUM(COUNT(CASE WHEN a.result = FALSE THEN 1 END)) OVER (PARTITION BY q.id), 0) AS FLOAT8 COUNT(CASE WHEN a.result = FALSE THEN 1 END) * 100.0 / NULLIF(SUM(COUNT(CASE WHEN a.result = FALSE THEN 1 END)) OVER (PARTITION BY q.id), 0) AS FLOAT8
) AS percentage ) AS percentage
FROM FROM
question q question q
JOIN LastContent lc ON q.id = lc.question_id
JOIN answer a ON q.id = a.question_id JOIN answer a ON q.id = a.question_id
WHERE WHERE
a.quiz_id = $1 a.quiz_id = $1
AND a.created_at >= TO_TIMESTAMP($2) AND a.created_at >= TO_TIMESTAMP($2)
AND a.created_at <= TO_TIMESTAMP($3) AND a.created_at <= TO_TIMESTAMP($3)
GROUP BY GROUP BY
q.id, q.title, a.content q.id, q.title, lc.last_answer_content
HAVING HAVING
COUNT(*) >= 1 COUNT(*) >= 1
) )