From 8731e6f0e1f10ab5ff5de4dbe0b417a841b1f6c0 Mon Sep 17 00:00:00 2001 From: 1AhmedYasser <26207361+1AhmedYasser@users.noreply.github.com> Date: Wed, 17 Jun 2026 01:38:40 +0300 Subject: [PATCH] fix(681): Fixed feedback csa calculations --- .../analytics/POST/feedback-chats-distribution.sql | 9 +++++++-- .../POST/feedback-csa-chats-feedback-nps.sql | 12 ++++++------ .../feedback-selected-csa-chats-distribution.sql | 9 +++++++-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/DSL/Resql/analytics/POST/feedback-chats-distribution.sql b/DSL/Resql/analytics/POST/feedback-chats-distribution.sql index afd30337..78db01e7 100644 --- a/DSL/Resql/analytics/POST/feedback-chats-distribution.sql +++ b/DSL/Resql/analytics/POST/feedback-chats-distribution.sql @@ -132,8 +132,13 @@ scale_ratings AS ( ) ) s ), +valid_feedback_count AS ( + SELECT COALESCE(SUM(rc.cnt), 0) AS cnt + FROM scale_ratings sr + JOIN rating_counts rc ON sr.rating = rc.rating +), no_feedback_count AS ( - SELECT (SELECT total_chats FROM all_ended_chats) - (SELECT COUNT(*) FROM chats_filtered) AS cnt + SELECT (SELECT total_chats FROM all_ended_chats) - (SELECT cnt FROM valid_feedback_count) AS cnt ), distribution_with_no_feedback AS ( SELECT json_agg(elem ORDER BY ord, rating_nullable NULLS LAST) AS distribution @@ -147,7 +152,7 @@ distribution_with_no_feedback AS ( ) SELECT json_build_object( 'distribution', (SELECT distribution FROM distribution_with_no_feedback), - 'total_feedback', (SELECT COUNT(*) FROM chats_filtered), + 'total_feedback', (SELECT cnt FROM valid_feedback_count), 'total_chats', (SELECT total_chats FROM all_ended_chats), 'is_five_scale', (SELECT COALESCE(is_five_rating_scale, 'false') = 'true' FROM rating_config) ) AS result; diff --git a/DSL/Resql/analytics/POST/feedback-csa-chats-feedback-nps.sql b/DSL/Resql/analytics/POST/feedback-csa-chats-feedback-nps.sql index f65fce0e..d0454e1d 100644 --- a/DSL/Resql/analytics/POST/feedback-csa-chats-feedback-nps.sql +++ b/DSL/Resql/analytics/POST/feedback-csa-chats-feedback-nps.sql @@ -55,14 +55,14 @@ point_nps AS ( WHEN (SELECT COALESCE(is_five_rating_scale, 'false') = 'true' FROM rating_config) THEN ROUND( 100.0 * SUM(CASE WHEN feedback_rating_dynamic IN (4, 5) THEN 1 ELSE 0 END) - / NULLIF(COUNT(base_id), 0), + / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 1 AND 5 THEN 1 ELSE 0 END), 0), 2 ) ELSE COALESCE(ROUND( ( - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 / NULLIF(COUNT(base_id), 0)) - - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END) * 1.0 / NULLIF(COUNT(base_id), 0)) + (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 10 THEN 1 ELSE 0 END), 0)) + - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END) * 1.0 / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 10 THEN 1 ELSE 0 END), 0)) ) * 100, 2 ), 0) @@ -76,14 +76,14 @@ period_nps AS ( WHEN (SELECT COALESCE(is_five_rating_scale, 'false') = 'true' FROM rating_config) THEN ROUND( 100.0 * SUM(CASE WHEN feedback_rating_dynamic IN (4, 5) THEN 1 ELSE 0 END) - / NULLIF(COUNT(base_id), 0), + / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 1 AND 5 THEN 1 ELSE 0 END), 0), 2 ) ELSE COALESCE(ROUND( ( - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 / NULLIF(COUNT(base_id), 0)) - - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END) * 1.0 / NULLIF(COUNT(base_id), 0)) + (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1.0 / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 10 THEN 1 ELSE 0 END), 0)) + - (SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END) * 1.0 / NULLIF(SUM(CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 10 THEN 1 ELSE 0 END), 0)) ) * 100, 2 ), 0) diff --git a/DSL/Resql/analytics/POST/feedback-selected-csa-chats-distribution.sql b/DSL/Resql/analytics/POST/feedback-selected-csa-chats-distribution.sql index 25b6c0e6..45cbd167 100644 --- a/DSL/Resql/analytics/POST/feedback-selected-csa-chats-distribution.sql +++ b/DSL/Resql/analytics/POST/feedback-selected-csa-chats-distribution.sql @@ -92,8 +92,13 @@ scale_ratings AS ( ) ) s ), +valid_feedback_count AS ( + SELECT COALESCE(SUM(rc.cnt), 0) AS cnt + FROM scale_ratings sr + JOIN rating_counts rc ON sr.rating = rc.rating +), no_feedback_count AS ( - SELECT (SELECT total_chats FROM all_ended_chats) - (SELECT COUNT(*) FROM chats_filtered) AS cnt + SELECT (SELECT total_chats FROM all_ended_chats) - (SELECT cnt FROM valid_feedback_count) AS cnt ), distribution_with_no_feedback AS ( SELECT json_agg(elem ORDER BY ord, rating_nullable NULLS LAST) AS distribution @@ -107,7 +112,7 @@ distribution_with_no_feedback AS ( ) SELECT json_build_object( 'distribution', (SELECT distribution FROM distribution_with_no_feedback), - 'total_feedback', (SELECT COUNT(*) FROM chats_filtered), + 'total_feedback', (SELECT cnt FROM valid_feedback_count), 'total_chats', (SELECT total_chats FROM all_ended_chats), 'is_five_scale', (SELECT COALESCE(is_five_rating_scale, 'false') = 'true' FROM rating_config) ) AS result;