diff --git a/DSL/Resql/analytics/POST/chat-follow-up-action-overview.sql b/DSL/Resql/analytics/POST/chat-follow-up-action-overview.sql index 42f2df50..9b1f1a37 100644 --- a/DSL/Resql/analytics/POST/chat-follow-up-action-overview.sql +++ b/DSL/Resql/analytics/POST/chat-follow-up-action-overview.sql @@ -4,18 +4,30 @@ WITH latest_per_base AS ( WHERE c.status = 'ENDED' AND c.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz ORDER BY c.base_id, c.updated DESC +), +latest_action_times AS ( + SELECT chat_base_id, MAX(created_at) AS latest_at + FROM chat_measurements + WHERE type = 'FOLLOW_UP_ACTION' + GROUP BY chat_base_id +), +current_actions AS ( + SELECT cm.* + FROM chat_measurements cm + JOIN latest_action_times lat ON cm.chat_base_id = lat.chat_base_id + AND cm.created_at = lat.latest_at + WHERE cm.type = 'FOLLOW_UP_ACTION' ) SELECT cm.value AS follow_up_action, COUNT(DISTINCT lp.base_id) AS count FROM latest_per_base lp -JOIN chat_measurements cm ON cm.chat_base_id = lp.base_id::uuid +JOIN current_actions cm ON cm.chat_base_id = lp.base_id::uuid WHERE (:showTest = TRUE OR lp.test = FALSE) AND ( array_length(ARRAY[:urls]::TEXT[], 1) IS NULL OR lp.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) - AND cm.type = 'FOLLOW_UP_ACTION' AND cm.value IS NOT NULL AND cm.value <> '' AND cm.value NOT IN (:excluded_actions) diff --git a/DSL/Resql/analytics/POST/chat-quality-overview-summary.sql b/DSL/Resql/analytics/POST/chat-quality-overview-summary.sql index 094933e5..bf5efa53 100644 --- a/DSL/Resql/analytics/POST/chat-quality-overview-summary.sql +++ b/DSL/Resql/analytics/POST/chat-quality-overview-summary.sql @@ -37,6 +37,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'THEME' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'THEME' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 @@ -46,6 +50,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'QUALITY' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'QUALITY' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 @@ -55,6 +63,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'FOLLOW_UP_ACTION' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'FOLLOW_UP_ACTION' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 diff --git a/DSL/Resql/analytics/POST/chat-quality-overview.sql b/DSL/Resql/analytics/POST/chat-quality-overview.sql index 538ff5d0..083dcc97 100644 --- a/DSL/Resql/analytics/POST/chat-quality-overview.sql +++ b/DSL/Resql/analytics/POST/chat-quality-overview.sql @@ -17,6 +17,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'THEME' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'THEME' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 @@ -26,6 +30,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'QUALITY' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'QUALITY' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 @@ -35,6 +43,10 @@ LEFT JOIN LATERAL ( FROM chat_measurements WHERE chat_base_id = lp.base_id::uuid AND type = 'FOLLOW_UP_ACTION' + AND created_at = ( + SELECT MAX(created_at) FROM chat_measurements + WHERE chat_base_id = lp.base_id::uuid AND type = 'FOLLOW_UP_ACTION' + ) AND value IS NOT NULL AND value <> '' LIMIT 1 diff --git a/DSL/Resql/analytics/POST/chat-theme-overview.sql b/DSL/Resql/analytics/POST/chat-theme-overview.sql index 2c12db40..bd573ff7 100644 --- a/DSL/Resql/analytics/POST/chat-theme-overview.sql +++ b/DSL/Resql/analytics/POST/chat-theme-overview.sql @@ -4,18 +4,30 @@ WITH latest_per_base AS ( WHERE c.status = 'ENDED' AND c.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz ORDER BY c.base_id, c.updated DESC +), +latest_theme_times AS ( + SELECT chat_base_id, MAX(created_at) AS latest_at + FROM chat_measurements + WHERE type = 'THEME' + GROUP BY chat_base_id +), +current_themes AS ( + SELECT cm.* + FROM chat_measurements cm + JOIN latest_theme_times ltt ON cm.chat_base_id = ltt.chat_base_id + AND cm.created_at = ltt.latest_at + WHERE cm.type = 'THEME' ) SELECT cm.value AS theme, COUNT(DISTINCT lp.base_id) AS count FROM latest_per_base lp -JOIN chat_measurements cm ON cm.chat_base_id = lp.base_id::uuid +JOIN current_themes cm ON cm.chat_base_id = lp.base_id::uuid WHERE (:showTest = TRUE OR lp.test = FALSE) AND ( array_length(ARRAY[:urls]::TEXT[], 1) IS NULL OR lp.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) - AND cm.type = 'THEME' AND cm.value IS NOT NULL AND cm.value <> '' AND cm.value NOT IN (:excluded_themes)