【发布时间】:2020-12-14 13:24:30
【问题描述】:
我想用一个匹配值获取所有 array_agg() 值。
就像robotsession."Session_OS" 中有多个值 ['Android', 'IOS', 'Windows']
在我当前的查询中,它只给出 ['Android']。但我想要所有。
我的查询是:
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"
在这个查询的结果中,“Session_OS”只给出了“Android”的值。
这个查询的样本数据是这样的:
id | Session_OS
-------|-------------
641 | {'Android'}
642 | {'Android'}
643 | {'Android'}
但我想要所有 IN Session_Os Agregation 的值,如果它匹配任何一个。就像在我的查询中一样,它与“Android”匹配:
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}
我怎样才能做到这一点??
更新:
完整数据,查询中没有此条件AND robotsession."Session_OS" IN ('Android')
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}
644 | {'IOS', 'Windows'}
645 | {'IOS'}
但是在查询结果中添加条件AND robotsession."Session_OS" IN ('Android')之后是
id | Session_OS
-------|-------------
641 | {'Android'}
642 | {'Android'}
643 | {'Android'}
但我想要这个。我该怎么做?
id | Session_OS
-------|-------------
641 | {'Android, 'IOS'}
642 | {'Android, 'Windows'}
643 | {'Android', 'IOS', 'Windows'}
【问题讨论】:
-
a) 请将您的示例代码最小化为与描述您的问题相关的绝对必要部分。 IE。我想,没有必要向我们展示 3 或 4 个连接。 b) 请添加一些示例数据和预期的输出,以便我们重现您的问题
-
您好,感谢您的快速回复。我已经更新了我的问题。请再次检查。
-
quote_literal() 是什么。分组前请先显示数据
-
quote_literal() 什么都不是。你可以忽略它。它只是为每个值添加引号('')。
-
请检查更新的问题。
标签: postgresql