Big Query 中的非重复值
Non-repeated values in Big Query
我是 SQL 的新手,所以这对大多数人来说可能是一个简单的解决方案,但我在 Big Query 中遇到了连接问题。我有两个表:
TABLE一个
id name purchases
1 alex 2
2 jane 7
3 peter 8
4 mario 1
5 luigi 6
TABLE 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
我希望我的最终结果每个 name/id 具有唯一的购买数量,因此如下:
TABLE 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
从 Table 的 A 和 B 得到 Table C 的查询是什么?
谢谢。
一种方法是使用 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 ..
我是 SQL 的新手,所以这对大多数人来说可能是一个简单的解决方案,但我在 Big Query 中遇到了连接问题。我有两个表:
TABLE一个
id name purchases
1 alex 2
2 jane 7
3 peter 8
4 mario 1
5 luigi 6
TABLE 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
我希望我的最终结果每个 name/id 具有唯一的购买数量,因此如下:
TABLE 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
从 Table 的 A 和 B 得到 Table C 的查询是什么? 谢谢。
一种方法是使用 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 ..