2016-11-29 105 views
0

我正在使用ROW_NUMBER按销售额去排名。查询看起来像下面row_number分区结果错误

SELECT country, SUM(sales) AS sales, 
     ROW_NUMBER() OVER (PARTITION BY country ORDER BY SUM(sales) DESC) AS 'rank' 
FROM table 
GROUP BY country 
ORDER BY sales DESC 

由于某种原因,排名是所有国家之一。

+2

,因为你是国家分组,也按国家划分,你总是会得到每个国家的1排由1.删除'分区的排名来自'row_number'的国家。 –

+1

'AS'rank''是无效的标准SQL。你正在使用哪个DBMS? –

回答

3

如果通过COUNTRY,在ROW_NUMBER复位划分为1

SELECT country, 
     SUM(sales) AS sales, 
     ROW_NUMBER() OVER (ORDER BY SUM(sales) DESC) AS 'rank' 
FROM table 
GROUP BY country 
ORDER BY sales DESC 
+0

啊,是的,没有想到这一点。 – Faiz

+0

您也可以使用SUM窗口功能并通过删除组。 –

+0

@JoeC我想了解它,但是你可以添加'row_number'吗? –