diff --git a/src/queries/sql/reports/getGoal.ts b/src/queries/sql/reports/getGoal.ts index 7e790ff4..7e74f06c 100644 --- a/src/queries/sql/reports/getGoal.ts +++ b/src/queries/sql/reports/getGoal.ts @@ -31,7 +31,23 @@ async function relationalQuery( const { rawQuery, parseFilters } = prisma; const eventType = type === 'path' ? EVENT_TYPE.pageView : EVENT_TYPE.customEvent; const column = type === 'path' ? 'url_path' : 'event_name'; - const { filterQuery, dateQuery, joinSessionQuery, cohortQuery, queryParams } = parseFilters({ + + // Filters WITHOUT eventType for total count (all sessions) + const { + filterQuery: baseFilterQuery, + dateQuery, + joinSessionQuery, + cohortQuery, + queryParams: baseQueryParams, + } = parseFilters({ + ...filters, + websiteId, + startDate, + endDate, + }); + + // Filters WITH eventType for goal-specific count + const { filterQuery: goalFilterQuery, queryParams: goalQueryParams } = parseFilters({ ...filters, websiteId, value, @@ -40,6 +56,8 @@ async function relationalQuery( eventType, }); + const queryParams = { ...baseQueryParams, ...goalQueryParams }; + return rawQuery( ` select count(distinct website_event.session_id) as num, @@ -50,7 +68,7 @@ async function relationalQuery( ${joinSessionQuery} where website_event.website_id = {{websiteId::uuid}} ${dateQuery} - ${filterQuery} + ${baseFilterQuery} ) as total from website_event ${cohortQuery} @@ -58,7 +76,7 @@ async function relationalQuery( where website_event.website_id = {{websiteId::uuid}} and ${column} = {{value}} ${dateQuery} - ${filterQuery} + ${goalFilterQuery} `, queryParams, ).then(results => results?.[0]); @@ -73,7 +91,22 @@ async function clickhouseQuery( const { rawQuery, parseFilters } = clickhouse; const eventType = type === 'path' ? EVENT_TYPE.pageView : EVENT_TYPE.customEvent; const column = type === 'path' ? 'url_path' : 'event_name'; - const { filterQuery, dateQuery, cohortQuery, queryParams } = parseFilters({ + + // Filters WITHOUT eventType for total count (all sessions) + const { + filterQuery: baseFilterQuery, + dateQuery, + cohortQuery, + queryParams: baseQueryParams, + } = parseFilters({ + ...filters, + websiteId, + startDate, + endDate, + }); + + // Filters WITH eventType for goal-specific count + const { filterQuery: goalFilterQuery, queryParams: goalQueryParams } = parseFilters({ ...filters, websiteId, value, @@ -82,6 +115,8 @@ async function clickhouseQuery( eventType, }); + const queryParams = { ...baseQueryParams, ...goalQueryParams }; + return rawQuery( ` select count(distinct session_id) as num, @@ -91,14 +126,14 @@ async function clickhouseQuery( ${cohortQuery} where website_id = {websiteId:UUID} ${dateQuery} - ${filterQuery} + ${baseFilterQuery} ) as total from website_event ${cohortQuery} where website_id = {websiteId:UUID} and ${column} = {value:String} ${dateQuery} - ${filterQuery} + ${goalFilterQuery} `, queryParams, ).then(results => results?.[0]);