【发布时间】:2016-06-06 16:28:06
【问题描述】:
我有表'Z':
id|zone|name
------------
1 | 34 | a
2 | 14 | b
3 | 99 | c
4 | 99 | d
5 | 90 | e
6 | 99 | c
查询
SELECT *,dense_rank() (OVER ORDER BY zone) FROM Z
返回:
id|zone|name|dense_rank
-----------------------
1 | 34 | a | 2
2 | 14 | b | 1
3 | 99 | c | 4
4 | 99 | d | 4
5 | 90 | e | 3
6 | 99 | c | 4
第一个(不太重要的)问题是: 是否可以按 id 排序dense_rank:
id|zone|name|dense_rank
-----------------------
1 | 34 | a | 1
2 | 14 | b | 2
3 | 99 | c | 3
4 | 99 | d | 3
5 | 90 | e | 4
6 | 99 | c | 3
但我的最终目标是在字段“区域”更改时更改数据分区。我需要这样的表:
id|zone|name|window-function?
-----------------------
1 | 34 | a | 1
2 | 14 | b | 2
3 | 99 | c | 3
4 | 99 | d | 3
5 | 90 | e | 4
6 | 99 | c | 5
有什么想法吗?
非常感谢
【问题讨论】:
-
你是怎么做到这一点的?比如说英文。它似乎按
id排序/排名,但随后99 得到3但仅适用于id3和4。你能解释一下你对这些进行排名吗?
标签: postgresql window-functions