我有一个数据库,我想从中提取一些分为客户和月份的销售数据。我尝试使用Rank()over(partition by ...)但不起作用。
SELECT * FROM (SELECT access_Month, client,
Sum(sales) as sales,
RANK () OVER (PARTITION BY Month ORDER BY Sum(sales) DESC) as rank
FROM DB.SALES
WHERE (country='poland')AND (Year=2016)
GROUP BY Month, client)
WHERE rank<8
I got results:
Month Client Sales Rank
1 A 100,000 1
1 B 10,000 2
1 C 1,000 3
1 D 100 4
1 E 10 5
1 F 1 6
.
.
.
1 X 0 30
2 A 120,000 1
2 B 14,400 2
2 C 1,728 3
2 D 207 4
2 E 25 5
2 F 3 6
. 0
. 0
. 0
2 X 0 30
当我按照前面提到的方式添加GROUP BY子句时,会显示语法排名错误。
我得到了结果:
我的目标是限制显示客户端的数量为8