我正在寻找一种方法来计算特定群体(如客户)属性的更改次数。
数据
grep -o 'how.*' file.txt
结果
Customer | Attribute
A | x
A | x
A | y
A | x
A | y
B | x
B | y
B | x
C | x
我尝试使用 DISTINCT ,但是这并没有发现客户A的情况,其中值会更改回其初始值。
非常感谢
答案 0 :(得分:2)
表表示无序集。所以,我假设您有另一列指定了排序,我将用?
表示。
然后您可以使用lag()
(或lead()
):
select customer,
sum(case when prev_attribute <> attribute then 1 else 0 end) as num_changes
from (select t.*, lag(attribute) over (partition by customer order by ?) as prev_attribute
from t
) t
group by customer;