I want to get all array_agg() values with one matched value.
Like if in robotsession."Session_OS" there are multiple values ['Android', 'IOS', 'Windows']
In my current query it's giving ['Android'] only. But I want all.
My query is:
SELECT robotAds."Ad_ID",
ARRAY_AGG(DISTINCT quote_literal(robotSession."Session_OS"))
as Session_OS
FROM robot__ads robotAds LEFT JOIN
robot__session__scraper__data robotScraper ON
robotScraper."adIDAdID" = robotAds."Ad_ID" LEFT JOIN
robot__session_data robotSession ON robotSession."id" = robotScraper."sessionIDId" WHERE
robotScraper."sessionIDId" IS NOT NULL
AND robotsession."Session_OS" IN ('Android')
GROUP BY robotAds."Ad_ID"
In the result of this query is "Session_OS" gives only 'Android' value.
And sample data of this query is like:
id | Session_OS
-------|-------------
641 | {'Android'}
642 | {'Android'}
643 | {'Android'}
But I want all the values that are IN Session_Os Agregation if it matched any of one. like here in my query it is matching with 'Android':
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}
How I can achieve this ??
UPDATE:
Full data, without this condition in query AND robotsession."Session_OS" IN ('Android')
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}
644 | {'IOS', 'Windows'}
645 | {'IOS'}
But after adding that condition AND robotsession."Session_OS" IN ('Android') in query result is
id | Session_OS
-------|-------------
641 | {'Android'}
642 | {'Android'}
643 | {'Android'}
But I want this. How I can do that?
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}