首页 > 解决方案 > 通过使用每个实例的共现创建列

问题描述

交易号 UPC_CODE 已购买_UNIT COPURCHASED_FREQUENCY
T123456 1040-1204-8612 2 2
T123456 4020-4104-2120 1 0
T123456 1040-1204-8612 3 2
T123456 2994-8182-9311 5 0
T191201 9879-8712-3456 2 2
T191201 2387-1928-1247 1 0
T191201 7417-2741-4245 4 0
T191201 9879-8712-3456 2 2

[另请参考假设表格的截图示例] 1

请参考上图:

假设数据包含诸如“TRANSACTION_NUMBER”(表示每笔交易的唯一实例)、“UPC_CODE”(表示唯一产品标识符信息)和“PURCHASED_UNIT”(表示特定产品被购买的次数)等信息。

我的目标是生成一个名为"COPURCHASED_FREQUENCY"的​​列。此列应包含有关在“交易编号”列指示的同一交易实例中共同购买 UPC 对的次数的信息。

棘手的是我们不能在 R 和 Python 上执行这个操作。相反,此列应由 SQL 操作创建。

我认为我要创建的是类似于共现实例的东西。到目前为止,我想不出一种特定的方法来做到这一点,我将感谢您的帮助!如果你能在这方面提供帮助,那就太好了!

标签: sqlgoogle-bigquerydata-manipulationadjacency-matrix

解决方案


这可以通过使用窗口函数来实现,如果你想为那些没有买过更多的人显示 0,你可以使用 case 语句:

select *
, count(*) over (partition by TRANSACTION_NUMBER,UPC_CODE) as COPURCHASED_FREQUENCY
from youratble

推荐阅读