以下数据是移动销售商店的数据。查找每年的前5名客户及其平均支出和平均数量。还可以找到支出百分比的变化。
在此问题中,我想问一下如何计算支出变化百分比。
IDMODEL| CUSTID | DATE | price |QTY
-------------------------------------------
114 | 10015 |2005-02-15 | 52.00 | 1
110 | 10027 |2005-10-23 | 84.00 | 1
110 | 10038 |2003-02-26 | 170.00 | 2
130 | 10044 |2009-05-25 | 500.00 | 1
107 | 10043 |2003-04-16 | 126.00 | 1
126 | 10022 |2003-11-03 | 169.00 | 1
111 | 10045 |2010-01-01 | 286.00 | 1
118 | 10012 |2007-04-21 | 149.00 | 1
128 | 10044 |2010-10-19 | 318.00 | 1
124 | 10003 |2010-10-03 | 435.00 | 1
117 | 10002 |2010-10-13 | 54.00 | 1
112 | 10049 |2003-05-20 | 18.00 | 1
129 | 10041 |2004-02-04 | 409.00 | 1
126 | 10048 |2010-10-22 | 173.00 | 1
112 | 10024 |2005-03-23 | 17.00 | 1
select top 5 [CUSTID] as CUST,
avg([Price]) as AVG_SPEND,
avg([Qty]) as AVG_QTY ,
year(date) as year
from [dbo].[FACT_TRANSACTIONS]
group by [CUSTID],year(date)
order by AVG_SPEND desc
答案 0 :(得分:0)
以下查询可能会帮助您进行百分比计算:
update
结果如下,
CREATE TABLE #temp (IDMODEL INT,CUSTID INT,[DATE] DATE,price NUMERIC(20,2), QTY INT)
INSERT INTO #temp VALUES
(114,100,'2005-02-15',52.00,1),
(115,100,'2005-10-23',100.00,2),
(116,100,'2006-10-23',120.00,1),
(117,100,'2007-10-23',90.00,3),
(118,100,'2007-10-23',84.00,1),
(114,100,'2008-10-23',52.00,1),
(110,200,'2005-10-23',80.00,1),
(116,200,'2006-10-23',120.00,2),
(115,200,'2006-10-23',100.00,1)
SELECT CUSTID
,dt_Year AS [Year]
,avg_Price AS [Average Price]
,avg_Qty AS [Average Quantity]
,total_Spend AS [Total Spend]
,CASE WHEN Prev_Spend = 0 THEN NULL ELSE CONVERT(NUMERIC(25,0),((total_Spend-Prev_Spend)/Prev_Spend) * 100) END AS [% Change]
FROM (
SELECT CUSTID,YEAR([DATE]) AS dt_Year,AVG(Price) AS avg_Price,AVG(QTY) AS avg_Qty,SUM([Spend]) AS [total_Spend]
,LAG(SUM(T.[Spend]),1,0) OVER(PARTITION BY CUSTID ORDER BY (YEAR([DATE]))) [Prev_Spend]
,ROW_NUMBER() OVER (PARTITION BY CUSTID ORDER BY SUM([Spend]) DESC) RNO
FROM #temp
CROSS APPLY (VALUES(Price*Qty)) AS T([Spend])
GROUP BY CUSTID,YEAR([DATE]) ) A
WHERE RNO <= 5
ORDER BY CUSTID,[Year]