我有一个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;条目。 有没有办法创建这样一个系列列,考虑到性别"性别"柱?
答案 0 :(得分:1)
您可以使用rank()功能:
CREATE TABLE "MyNewTable" AS
SELECT gender,
height,
rank() OVER(partition by gender order by height) as myrank
FROM "GendersHeight"