1

我正在使用 Aster Basket_Generator 函数从购买表 (retail_purchases) 中计算一个篮子。我可以使用以下代码毫无问题地创建购物篮:

SELECT order_number, gsi_sku1, gsi_sku2, Count(1) 
FROM basket_generator(
    ON retail_purchases 
    PARTITION BY order_number 
    BASKET_SIZE(2) 
    BASKET_ITEM('gsi_sku')
    ACCUMULATE('order_number')
) 
WHERE gsi_sku1 in (11001788, 12002389) 
GROUP BY 1, 2, 3; 
LIMIT 10;

我还想做的是计算每个篮子的平均值。理想情况下,这将作为一列返回给我,但我会对篮子中每件商品的平均售价完全满意。

我尝试了以下方法:

SELECT order_number, gsi_sku1, gsi_sku2, avg(sales_amt), Count(1) 
FROM basket_generator(
    ON retail_purchases 
    PARTITION BY order_number 
    BASKET_SIZE(2) 
    BASKET_ITEM('gsi_sku')
    ACCUMULATE('order_number', 'sales_amt')
) 
WHERE gsi_sku1 in (11001788, 12002389) 
GROUP BY 1, 2, 3; 
LIMIT 10;

但是 avg(sales_amt) 列似乎没有返回正确的值。使用 Aster Basket_Generator 分析函数计算篮子聚合的推荐方法是什么?

4

1 回答 1

0

来自 Aster 文档basket_generator

ACCUMULATE 子句中的列应该是 PARTITION BY 子句中的列的子集。否则无法保证确定性属性。

因此,您的方法不成立,因为sales_amt不是PARTION BY的一部分(由于价格变化,这是正确的)。

一种选择是将结果basket_generator放入新表中,然后将其加入包含价格的产品目录 - 结果表将包含价格以计算平均销售价格。

于 2013-07-26T19:30:09.753 回答