我有一个包含两列的 100 行表("性别高度"):第一列("性别")是一个字符串("男性"或"女性")。 第二列("高度")是一个可变数字。我根据这两列对表格进行了相应的排序:
select *
into MyNewTable
from GendersHeight
order by gender, height DESC
(我的表中有 40 个"男性"行和 60 个"女性"行)现在我想向包含序列号的表"MyNewTable"添加一个新列(第 3 列)。如果我使用脚本:
ALTER TABLE MyNewTable
Add column MySorter serial NOT NULL;
我只会得到一个范围从 1 到 100 的串行列。但是 - 我在这里真正想要实现的是创建一个列,该列首先为所有"女性"条目创建范围从 1 到 60,然后为所有"男性"条目创建范围从 1 到 40。有没有办法创建这样一个考虑到"性别"列性质的系列列?
你可以使用 rank() 函数:
CREATE TABLE "MyNewTable" AS
SELECT gender,
height,
rank() OVER(partition by gender order by height) as myrank
FROM "GendersHeight"