2014-12-30 85 views
0

我有一個包含兩列的100行表(「GendersHeight」):第一列(「性別」)是字符串(「男性」或「女」)。第二列(「高度」)是一個可變數字。我整理基礎上相應這兩列的表:在表格中添加一個序列號的列,該序列號基於兩列中的信息

select * 
into MyNewTable 
from GendersHeight 
order by gender, height DESC 

(有40個「男性」行,我的表60「女」行) 現在我想添加一個新列(第3列)以表格「MyNewTable」保存序列號。 如果我將使用腳本:

ALTER TABLE MyNewTable 
Add column MySorter serial NOT NULL; 

我就把範圍下的串行列從1到100 但是 - 我真的要在這裏實現創造,將範圍從1列什麼對於所有「女性」條目,首先爲60,然後對於所有「男性」條目,範圍從1到40。 有沒有辦法創建一個考慮到「性別」列性質的串行列?

回答

1

可以使用rank()功能:

CREATE TABLE "MyNewTable" AS 
SELECT gender, 
    height, 
    rank() OVER(partition by gender order by height) as myrank 
FROM "GendersHeight" 
+0

非常感謝敏實! - 這個解決方案非常棒!正是我需要的。我完全可以創建一個額外的表格來保存我的新排序/排序結果。大! – Roy