我在 Google Groups 上遇到了以下关于在聚合中选择第一个/最后一个值的能力的旧讨论:
https://groups.google.com/forum/?fromgroups=#!msg/bigquery-discuss/1WAJw1UC73w/_RbUCsMIvQ4J
我想知道给出的答案是否仍然是最新的。更具体地说,是否有可能在不进行 JOIN 或使用嵌套记录的情况下执行以下操作:
SELECT foo, LAST(bar) last_bar FROM table GROUP BY foo HAVING last_bar = b
用于下表:
foo, bar
1, a
1, b
2, b
2, c
3, b
会返回:
foo, last_bar
1, b
3, b
如果不可能,我正在考虑使用以下组合来做同样的事情
GROUP_CONCAT
并REGEXP_MATCH
在连接结束时:
SELECT foo, GROUP_CONCAT(bar) concat_bar from table GROUP BY foo HAVING REGEXP_MATCH(concat_bar, "b$")
但这仅在按行的顺序进行聚合时才有效。是这样吗?