1- WITH chat_buerokratt AS (
1+ WITH rating_config AS (
2+ SELECT value AS is_five_rating_scale
3+ FROM configuration
4+ WHERE key = ' isFiveRatingScale'
5+ AND id IN (SELECT max (id) FROM configuration WHERE key = ' isFiveRatingScale' GROUP BY key)
6+ AND NOT deleted
7+ ),
8+ chat_buerokratt AS (
29 SELECT DISTINCT base_id,
310 first_value(ended) OVER (
411 PARTITION BY base_id
512 ORDER BY updated
613 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
714 ) AS ended,
8- last_value(feedback_rating) OVER (
9- PARTITION BY base_id
10- ORDER BY updated
11- ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
12- ) AS feedback_rating
15+ CASE
16+ WHEN (SELECT COALESCE(is_five_rating_scale, ' false' ) = ' true' FROM rating_config)
17+ THEN last_value(feedback_rating_five) OVER (
18+ PARTITION BY base_id
19+ ORDER BY updated
20+ ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
21+ )
22+ ELSE last_value(feedback_rating) OVER (
23+ PARTITION BY base_id
24+ ORDER BY updated
25+ ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING
26+ )
27+ END AS feedback_rating_dynamic
1328 FROM chat
1429 WHERE (
1530 array_length(ARRAY[:urls]::TEXT [], 1 ) IS NULL
@@ -26,17 +41,21 @@ WITH chat_buerokratt AS (
2641 AND message .author_role = ' buerokratt'
2742 )
2843 AND status = ' ENDED'
29- AND feedback_rating IS NOT NULL
44+ AND CASE
45+ WHEN (SELECT COALESCE(is_five_rating_scale, ' false' ) = ' true' FROM rating_config)
46+ THEN feedback_rating_five IS NOT NULL
47+ ELSE feedback_rating IS NOT NULL
48+ END
3049 AND ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz
3150),
3251point_nps AS (
3352 SELECT date_trunc(:metric, ended)::text AS date_time,
3453 COALESCE(
3554 CAST((
3655 (
37- SUM (CASE WHEN feedback_rating BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1 .0 -
38- SUM (CASE WHEN feedback_rating BETWEEN 0 AND 6 THEN 1 ELSE 0 END)
39- ) / NULLIF(COUNT (feedback_rating ), 0 ) * 100
56+ SUM (CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1 .0 -
57+ SUM (CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END)
58+ ) / NULLIF(COUNT (feedback_rating_dynamic ), 0 ) * 100
4059 ) AS int ), 0 ) AS nps
4160 FROM chat_buerokratt
4261 GROUP BY date_time
@@ -46,9 +65,9 @@ period_nps AS (
4665 SELECT COALESCE(
4766 CAST((
4867 (
49- SUM (CASE WHEN feedback_rating BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1 .0 -
50- SUM (CASE WHEN feedback_rating BETWEEN 0 AND 6 THEN 1 ELSE 0 END)
51- ) / NULLIF(COUNT (feedback_rating ), 0 ) * 100
68+ SUM (CASE WHEN feedback_rating_dynamic BETWEEN 9 AND 10 THEN 1 ELSE 0 END) * 1 .0 -
69+ SUM (CASE WHEN feedback_rating_dynamic BETWEEN 0 AND 6 THEN 1 ELSE 0 END)
70+ ) / NULLIF(COUNT (feedback_rating_dynamic ), 0 ) * 100
5271 ) AS int ), 0 ) AS nps
5372 FROM chat_buerokratt
5473)
0 commit comments