ROW_NUMBER 超过列结果
ROW_NUMBER over column result
如何计算给定列中出现的次数?
按照这个例子。使用这样的 table:
+----------+---------+------+
| PersonID | Name | City |
+----------+---------+------+
| 1 | John | NY |
| 2 | Mohit | CA |
| 3 | Jay | AZ |
| 4 | Roger | NY |
| 5 | David | NY |
| 6 | Peter | AZ |
| 7 | Ana | NY |
| 8 | Irina | NY |
| 9 | Michael | NY |
| 10 | Ken | AZ |
+----------+---------+------+
我怎样才能做到这一点?
+----------+---------+------+-------------+
| PersonID | Name | City | CityCounter |
+----------+---------+------+-------------+
| 1 | John | NY | 1 |
| 2 | Mohit | CA | 1 |
| 3 | Jay | AZ | 1 |
| 4 | Roger | NY | 2 |
| 5 | David | NY | 3 |
| 6 | Peter | AZ | 2 |
| 7 | Ana | NY | 4 |
| 8 | Irina | NY | 5 |
| 9 | Michael | NY | 6 |
| 10 | Ken | AZ | 3 |
+----------+---------+------+-------------+
我必须在 SUM 上使用 ROW_NUMBER 函数吗?
如果我没理解错的话,你只是想枚举每个城市的值,然后按 id
:
排序
select t.*
from (select t.*,
row_number() over (partition by city
order by personid) as CityCounter
from table t
) t
order by personid;
用row_number()解析函数可以得到结果,但是没有over SUM?
您可以阅读 online 有关使用 row_number() 及其正确语法的文档。
在你的情况下,你想对每个城市的出现进行编号,这意味着你需要按城市分组(按城市划分),然后你需要为你的排序提供逻辑,哪条城市线应该排在第一位, personID 是第一个吗?
您的 row_number 将如下所示:
row_number() over(partition by city order by personID)
就这么简单
SELECT *,
cityCounter = ROW_NUMBER() OVER (PARTITION BY city ORDER BY personID)
FROM yourTable
ORDER BY personID
如何计算给定列中出现的次数?
按照这个例子。使用这样的 table:
+----------+---------+------+
| PersonID | Name | City |
+----------+---------+------+
| 1 | John | NY |
| 2 | Mohit | CA |
| 3 | Jay | AZ |
| 4 | Roger | NY |
| 5 | David | NY |
| 6 | Peter | AZ |
| 7 | Ana | NY |
| 8 | Irina | NY |
| 9 | Michael | NY |
| 10 | Ken | AZ |
+----------+---------+------+
我怎样才能做到这一点?
+----------+---------+------+-------------+
| PersonID | Name | City | CityCounter |
+----------+---------+------+-------------+
| 1 | John | NY | 1 |
| 2 | Mohit | CA | 1 |
| 3 | Jay | AZ | 1 |
| 4 | Roger | NY | 2 |
| 5 | David | NY | 3 |
| 6 | Peter | AZ | 2 |
| 7 | Ana | NY | 4 |
| 8 | Irina | NY | 5 |
| 9 | Michael | NY | 6 |
| 10 | Ken | AZ | 3 |
+----------+---------+------+-------------+
我必须在 SUM 上使用 ROW_NUMBER 函数吗?
如果我没理解错的话,你只是想枚举每个城市的值,然后按 id
:
select t.*
from (select t.*,
row_number() over (partition by city
order by personid) as CityCounter
from table t
) t
order by personid;
用row_number()解析函数可以得到结果,但是没有over SUM? 您可以阅读 online 有关使用 row_number() 及其正确语法的文档。
在你的情况下,你想对每个城市的出现进行编号,这意味着你需要按城市分组(按城市划分),然后你需要为你的排序提供逻辑,哪条城市线应该排在第一位, personID 是第一个吗?
您的 row_number 将如下所示:
row_number() over(partition by city order by personID)
就这么简单
SELECT *,
cityCounter = ROW_NUMBER() OVER (PARTITION BY city ORDER BY personID)
FROM yourTable
ORDER BY personID