diff --git a/DSL/Resql/analytics/POST/status-all-chats.sql b/DSL/Resql/analytics/POST/status-all-chats.sql index 573daa7a..03259e9e 100644 --- a/DSL/Resql/analytics/POST/status-all-chats.sql +++ b/DSL/Resql/analytics/POST/status-all-chats.sql @@ -1,4 +1,15 @@ -WITH latest_messages AS ( +WITH latest_chats AS ( + SELECT DISTINCT ON (chat.base_id) + chat.base_id, + chat.ended, + chat.status, + chat.end_user_url, + chat.test + FROM chat + WHERE chat.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz + ORDER BY chat.base_id, chat.created DESC +), +latest_messages AS ( SELECT DISTINCT ON (message.chat_base_id) message.chat_base_id, message.event @@ -7,21 +18,20 @@ WITH latest_messages AS ( ORDER BY message.chat_base_id, message.created DESC ) SELECT - date_trunc(:metric, chat.ended) AS date_time, + date_trunc(:metric, lc.ended) AS date_time, lm.event AS event, - COUNT(DISTINCT chat.base_id) -FROM chat + COUNT(DISTINCT lc.base_id) AS count +FROM latest_chats lc JOIN latest_messages lm - ON chat.base_id = lm.chat_base_id -WHERE chat.status = 'ENDED' + ON lc.base_id = lm.chat_base_id +WHERE lc.status = 'ENDED' AND ( array_length(ARRAY[:urls]::TEXT[], 1) IS NULL - OR chat.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) + OR lc.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) AND ( :showTest = TRUE - OR chat.test = FALSE + OR lc.test = FALSE ) - AND chat.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz GROUP BY date_time, event ORDER BY event; diff --git a/DSL/Resql/analytics/POST/status-csa-chats.sql b/DSL/Resql/analytics/POST/status-csa-chats.sql index 394eb10f..1b30ea7b 100644 --- a/DSL/Resql/analytics/POST/status-csa-chats.sql +++ b/DSL/Resql/analytics/POST/status-csa-chats.sql @@ -1,4 +1,15 @@ -WITH latest_messages AS ( +WITH latest_chats AS ( + SELECT DISTINCT ON (chat.base_id) + chat.base_id, + chat.ended, + chat.status, + chat.end_user_url, + chat.test + FROM chat + WHERE chat.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz + ORDER BY chat.base_id, chat.created DESC +), +latest_messages AS ( SELECT DISTINCT ON (message.chat_base_id) message.chat_base_id, message.event @@ -8,21 +19,20 @@ WITH latest_messages AS ( ORDER BY message.chat_base_id, message.created DESC ) SELECT - date_trunc(:metric, chat.ended) AS date_time, + date_trunc(:metric, lc.ended) AS date_time, lm.event AS event, - COUNT(DISTINCT chat.base_id) -FROM chat + COUNT(DISTINCT lc.base_id) AS count +FROM latest_chats lc JOIN latest_messages lm - ON chat.base_id = lm.chat_base_id -WHERE chat.status = 'ENDED' + ON lc.base_id = lm.chat_base_id +WHERE lc.status = 'ENDED' AND ( array_length(ARRAY[:urls]::TEXT[], 1) IS NULL - OR chat.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) + OR lc.end_user_url LIKE ANY(ARRAY[:urls]::TEXT[]) ) AND ( :showTest = TRUE - OR chat.test = FALSE + OR lc.test = FALSE ) - AND chat.ended::timestamptz BETWEEN :start::timestamptz AND :end::timestamptz GROUP BY date_time, event ORDER BY event;