Мне неясно, как выглядят ваши данные. Если в сеансе есть одна строка, вы можете просто использовать:
SELECT COUNT(*) AS total_sessions,
COUNT(DISTINCT user_pseudo_id) AS users
. . .
Если вы можете иметь несколько событий в сеансе, вы можете использовать хакерский подход:
SELECT COUNT(DISTINCT CONCAT(user_pseudo_id, ':', CAST(session_count as string)))
Я предлагаю это потому, что иногда в сложном запросе проще просто настроить одну строку. В противном случае решение Михаила является разумным.
Однако я бы предложил вместо этого оконные функции:
SELECT SUM(CASE WHEN seqnum = 1 THEN session_count END) AS total_sessions,
COUNT(DISTINCT user_pseudo_id) AS users
FROM (SELECT e.*,
ROW_NUMBER() OVER (PARTITION BY user_pseudo_id ORDER BY session_count DESC) as seqnum
FROM `xyz.analytics_111.events_*`
WHERE e.event_name = 'user_engagement' AND
_TABLE_SUFFIX BETWEEN '20200201' AND '20200229' AND
platform = 'ANDROID'
) e;
Причина, по которой я рекомендую это, заключается в том, что вы можете сохранить оставшиеся вычисления без их изменения. Это удобно в сложном запросе.