我對 SQL 相當陌生,所以這對大多數人來說可能是一個簡單的解決方案,但我在 Big Query 中遇到了連接問題。我有兩張桌子:
表A
id name purchases
1 alex 2
2 jane 7
3 peter 8
4 mario 1
5 luigi 6
表 B
id name visited
1 alex jan
2 jane jan
2 jane feb
3 peter jan
3 peter feb
3 peter mar
4 mario feb
5 luigi mar
我希望我的最終結果具有每個名稱/ID 的唯一購買次數,因此如下:
表 C
id name visited purchases
1 alex jan 2
2 jane jan 7
2 jane feb 0
3 peter jan 8
3 peter feb 0
3 peter mar 0
4 mario feb 1
5 luigi mar 6
但是,無論我執行什么連接,我最終都會得到每次匹配的每個用戶的購買次數,如下所示:
id name visited purchases
1 alex jan 2
2 jane jan 7
2 jane feb 7
3 peter jan 8
3 peter feb 8
3 peter mar 8
4 mario feb 1
5 luigi mar 6
從表 A 和表 B 中獲取表 C 的查詢是什么?謝謝你。
uj5u.com熱心網友回復:
一種方法是使用row_number()
select b.*, coalesce(a.purchases, 0) purchases
from (
select *, row_number() over(partition by id order by visited) rn
from b ) b
left join a on a.id = b.id and b.rn=1
您可能希望visited根據訂購要求解碼為序數,例如
.. order by case visited when 'jan' then 1 when .. end ..
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460339.html
