postgresql 序列号取决于行?
postgresql sequence number depending on rows?
正在学习数据库课程,但我不确定如何创建此视图。
我有这个 table(postgresql):
CREATE TABLE InQueue (
id INT REFERENCES Student(id),
course VARCHAR(10) REFERENCES RestrictedCourse(course_code),
since TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id,course),
UNIQUE (course,since)
);
我应该创建一个视图,列出课程、ID、编号,其中编号是用 since 计算的。基本上最低的队列编号为 1,第二低的队列编号为 2,依此类推。 (course,number) 是唯一的,但不是数字本身,因为有很多不同的课程。
我认为需要做的是首先按 (course,since) 对 table 进行排序,然后只添加序号,但最终课程会改变,然后序号需要重新开始, 又从 1 开始。
有人能给我指出正确的方向吗? :)
使用:
Select row_number() over (partition by course order by since asc) as yournumber, id,
course, since from InQueue
您可以在此处阅读有关解析函数的信息:http://www.postgresql.org/docs/9.4/static/tutorial-window.html
正在学习数据库课程,但我不确定如何创建此视图。 我有这个 table(postgresql):
CREATE TABLE InQueue (
id INT REFERENCES Student(id),
course VARCHAR(10) REFERENCES RestrictedCourse(course_code),
since TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (id,course),
UNIQUE (course,since)
);
我应该创建一个视图,列出课程、ID、编号,其中编号是用 since 计算的。基本上最低的队列编号为 1,第二低的队列编号为 2,依此类推。 (course,number) 是唯一的,但不是数字本身,因为有很多不同的课程。
我认为需要做的是首先按 (course,since) 对 table 进行排序,然后只添加序号,但最终课程会改变,然后序号需要重新开始, 又从 1 开始。
有人能给我指出正确的方向吗? :)
使用:
Select row_number() over (partition by course order by since asc) as yournumber, id,
course, since from InQueue
您可以在此处阅读有关解析函数的信息:http://www.postgresql.org/docs/9.4/static/tutorial-window.html