2

集計の最初/最後の値を選択する機能について、Google グループで次の古い議論に出くわしました。

https://groups.google.com/forum/?fromgroups=#!msg/bigquery-discuss/1WAJw1UC73w/_RbUCsMIvQ4J

与えられた答えがまだ最新であるかどうか疑問に思っていました。
より具体的には、 JOINを実行したり、ネストされたレコードを使用して次のようなことをしたりせずに、それは可能ですか
?

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$")  

ただし、集計が行の順序で行われる場合にのみ機能します。そうですか?

4

3 に答える 3

2

私は同様の問題を解決しようとしていて、GROUP_CONCATを使用して同じ結論に達しました

これを試してみてください:

SELECT foo, REGEXP_REPLACE(group_concat(bar),".*,","") as last_bar 
FROM [dataset.table] 
GROUP BY foo
于 2012-10-10T19:31:38.073 に答える
0

BigQuery に格納されたレコードの順序は保証されないため、ある時点で失敗する可能性があります。「最後のエントリ」は常に最大になりますか? もしそうなら、おそらく次はあなたが探しているものですか?

SELECT foo, MAX(bar) FROM test GROUP BY foo
于 2012-10-18T23:14:36.707 に答える