Я наткнулся на следующую старую дискуссию в группах Google о возможности выбора первого / последнего значения в совокупности:
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$")
но это работает только в том случае, если агрегирование выполняется в порядке строк. Так ли это на самом деле?