我想监视客户的购买行为。每个客户可以购买一个或多个产品,每个产品的价格范围不同。如何确定客户是持续购买、切换到较小的捆绑包还是升级到较大的捆绑包?
到目前为止,我有下面的SQL脚本来查看移动,但是我如何修改它以使其前进并获得我需要的更多细节?
SELECT
A.Month PRE_MONTH,A.ProductID PRE_PRODUCTID,
A.Product_name PRE_PRODUCT_NAME,
B.Month POST_MONTH,B.ProductID POST_PRODUCTID,
B.Product_name POST_PRODUCT_NAME,
SUM(B.sales)sales, COUNT(DISTINCT B.CustomerID)USER
FROM ( SELECT * FROM TABLE_X WHERE MONTH = 'JAN' ) A
LEFT OUTER JOIN ( SELECT * FROM TABLE_X WHERE MONTH = 'FEB')B ON A.CustomerID = B.CustomerID
字符串
应该对SQL脚本进行哪些调整,以确定客户1的销售额与前一个月相比是高还是低?此外,我们如何确定他们从哪些产品过渡到哪些产品?
原始数据看起来像这样:
的数据
2条答案
按热度按时间g52tjvyc1#
您可以自连接不同月份的表,然后简单地使用case语句来确定它是更高还是更低的销售额。
字符串
pn9klfpd2#
其中一个选项是使用LAG()分析函数将销售额与以前的销售额进行比较。
字符串
主SQL
型
LAG()分析函数也可以让你得到产品的移动。只需在选择列表中添加另一列:
型
如果原始数据应首先求和,那么您可以创建CTE(将其命名为sales)并从CTE而不是tbl中选择。如果产品移动列在选择列表中,则应注意产品移动列-如果不在选择列表中,则可以使用以下代码:
型