Я пытаюсь оптимизировать запрос (вместо того, чтобы повторять его много раз) с помощью этого НЕ ФУНКЦИОНАЛЬНОГО КОДА выше (поскольку подзапросы возвращают только 1 столбец):
SELECT
e.pageview_identifier,
e.created_at,
e.pageview_current_url,
e.pageview_mobile,
(
SELECT event_type, COUNT(event_identifier)
FROM events v
WHERE
v.company_identifier = e.company_identifier AND
v.user_identifier = e.user_identifier AND
v.pageview_identifier = e.pageview_identifier
GROUP BY v.event_type
)
FROM events e
WHERE
company_identifier = 'xyz' AND
user_identifier = '01CDQZVSJFBDA8W444JS2CS3BA' AND
event_type = 'page:view';
В основном, я хочу получить столбцы как
pageview_identifier, created_at, ..., event_type_a_count, event_type_b_count, ...
A ФУНКЦИОНАЛЬНЫЙ код, который работает:
SELECT
e.pageview_identifier,
e.created_at,
e.pageview_current_url,
e.pageview_mobile,
(
SELECT COUNT(event_identifier)
FROM events v
WHERE
v.company_identifier = e.company_identifier AND
v.user_identifier = e.user_identifier AND
v.pageview_identifier = e.pageview_identifier AND
v.event_type = 'mouse:move'
) as mouse_move_count
FROM events e
WHERE
company_identifier = 'xyz' AND
user_identifier = '01CDQZVSJFBDA8W444JS2CS3BA' AND
event_type = 'page:view';
Но в этом случае мне понадобитсяповторять много раз этот подзапрос для каждого вида event_type
.
Редактировать 1 - Дополнительная информация:
В моем предложении WHERE
я ограничиваю его только event_type = 'page:view'
.У меня есть несколько возможных значений для event_type
, и для каждого page:view
мне нужно подсчитать связанные с ним события (с различными event_type
) на основе условия e.pageview_identifier = v.pageview_identifier
.