Ниже для стандартного SQL BigQuery (нет необходимости в самостоятельных соединениях)
#standardSQL
SELECT service, COUNT(1) AS occurrence_as_max
FROM (
SELECT STRING_AGG(service ORDER BY no_of_trx DESC LIMIT 1) service
FROM `project.dataset.table`
GROUP BY user_id
)
GROUP BY service
Вы можете проверить, поиграть с выше, используя пример данных из вашего вопроса, как в примере ниже
#standardSQL
WITH `project.dataset.table` AS (
SELECT 1 user_id, 'A' service, 56 no_of_trx UNION ALL
SELECT 1, 'C', 43 UNION ALL
SELECT 1, 'B', 22 UNION ALL
SELECT 2, 'C', 10 UNION ALL
SELECT 2, 'A', 3 UNION ALL
SELECT 3, 'B', 45 UNION ALL
SELECT 3, 'C', 7 UNION ALL
SELECT 4, 'A', 77 UNION ALL
SELECT 4, 'B', 63
)
SELECT service, COUNT(1) AS occurrence_as_max
FROM (
SELECT STRING_AGG(service ORDER BY no_of_trx DESC LIMIT 1) service
FROM `project.dataset.table`
GROUP BY user_id
)
GROUP BY service
-- ORDER BY service
с результатом
Row service occurrence_as_max
1 A 2
2 B 1
3 C 1