向表中添加一个列,该列的序列号基于两列中的信息

时间:2014-12-30 20:44:49

标签: postgresql sorting

我有一个100行表(" GendersHeight"),有两列:第一列("性别")是一个字符串("男性"或& #34;女性&#34)。第二列("高度")是一个变量号。我相应地根据这两列对表进行了排序:

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

(我的桌子中有40个"男性"行,60"女性"行) 现在我想在表格#34; MyNewTable"中添加一个新列(第3列)。持有序列号。 如果我将使用脚本:

ALTER TABLE MyNewTable
Add column MySorter serial NOT NULL; 

我只是得到一个范围从1到100的串行列。 但是 - 我想要真正实现的是创建一个范围从1到60的列,对于所有"女性"条目,然后所有"男性"的范围从1到40;条目。 有没有办法创建这样一个系列列,考虑到性别"性别"柱?

1 个答案:

答案 0 :(得分:1)

您可以使用rank()功能:

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