如何使用SQL提取客户在最后交易日产生的最高销售额?



我正在尝试确定客户在最后交易日期产生的单笔购买的最高销售额。

我尝试在订单日期和销售额上使用max功能,但是结果将显示客户在该日期进行的所有购买,而不仅仅是与最高销售额相关的一笔交易。这反过来又为我提供了一个客户的多个客户密钥,如所附图像所示。下面是我使用的代码。

SELECT DISTINCT D.CustomerKey 'Customer Key',C.[OrderDate] 'Order Date', 
MAX(C.salesamount) 'Max Sales Amount'
FROM [dbo].[FactInternetSales] C 
INNER JOIN [dbo].[DimCustomer] 
D ON C.CustomerKey = D.CustomerKey 
WHERE C.[OrderDate]=
(SELECT max(C.orderdate) FROM [dbo[FactInternetSales] C 
WHERE D.CustomerKey = C.CustomerKey) 
GROUP BY D.customerkey,C.salesamount, C.OrderDate 
ORDER BY D.customerkey

我希望结果显示三列:客户密钥 - 但每个客户只有一个,他们上次购买的订单日期以及该日期的最高销售额。

几个点,GROUP BY会给你一个独特的组合,所以不需要明确添加不同的,你也不必按销售额分组。修改后的以下查询将给出客户购买的每一天的最大销售额。

SELECT D.CustomerKey 'Customer Key',C.[OrderDate] 'Order Date', 
MAX(C.salesamount) 'Max Sales Amount'
FROM [dbo].[FactInternetSales] C 
INNER JOIN [dbo].[DimCustomer] 
D ON C.CustomerKey = D.CustomerKey 
WHERE C.[OrderDate]=
(SELECT max(C.orderdate) FROM [dbo[FactInternetSales] C 
WHERE D.CustomerKey = C.CustomerKey) 
GROUP BY D.customerkey, C.OrderDate 
Order by D.CustomerKey

相关内容

最新更新