贾斯汀·米特(Justine Mit)
这是我的以下数据集的样子:
我有多个用户,每个用户都有一个user_key。FLAG_1代表他们访问过的网站(A =网站1,B =网站2)。我想创建一个第二个标志,该标志指示用户是否至少访问过Webiste 2。用户111尚未访问网站2。因此,他的FLAG_2为0,因为他的FLAG_1从不= B。用户222已访问网站2,因此他的FLAG_2为1(对于表中的所有实例)。用户333仅访问过网站2,因此他的FLAG_2为1。
我应该使用哪种功能来标记用户的FLAG_1中是否至少有1个“ B”,因此,其FLAG_2始终为1。我正在考虑使用CASE WHEN,但这是正确的方法吗?
谢谢!
戈登·利诺夫(Gordon Linoff)
您可以使用窗口功能:
select t.*,
max(case when flag1 = 'B' then 1 else 0 end) over (partition by user) as ever_B
from t;
或者,按照我的喜好,使用布尔值:
select t.*,
boolor_agg(flag1 = 'B') over (partition by user) as ever_b
from t;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
编辑于
我来说两句