我正在使用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分析函数时,推荐的计算篮子聚合的方法是什么?
发布于 2013-07-27 03:30:10
来自basket_generator上的Aster文档
clause子句中的
列应该是PARTITION BY子句中列的子集。否则,不能保证确定性属性。
因此,您的方法不成立,因为sales_amt不是PARTION BY的一部分(而且由于价格变化,理所当然也是如此)。
一种选择是将basket_generator的结果放入新的表中,然后将其连接到包含价格的产品目录中-结果表将包含价格以计算平均销售价格。
https://stackoverflow.com/questions/17818325
复制相似问题