您好,我在尝试创建表示队列的视图时遇到问题。这是关于等待名单中的学生试图注册课程的。我有一个表格“ Waits”,其属性为queue#TIMESTAMP,stundentID STRING,courseCode STRING,
由此,我试图创建一个象征队列的视图。让我们将其称为“队列”,其属性为CourseCode STRING,studentID STRING,queue#INT。
在这种情况下,queue#是一个数字,表示您在队列中的位置,因此每个学生的时间戳记越旧,视图中的queue#越低。
我对如何执行此操作有一个想法,但我不知道如何用代码将其记录下来。
CREATE VIEW Queue
SELECT code, cid,
CASE
WHEN MIN(queue#) THEN NVL(MIN(place)) + 1
END AS place;
FROM Waits
如果有人可以告诉我正确的思路来表达我的想法,我将不胜感激。
如果我理解正确,则您想根据时间戳的顺序分配等级。时间戳记越旧,队列中的等级越高。
我建议分析功能。为简单起见,您可以使用ROW_NUMBER
。
例如,
SELECT代码,CID,ROW_NUMBER()OVER(按timestamp_column排序)rn 从等待
另外,根据等级的要求和复杂程度,您还可以看看函数RANK
和DENSE_RANK
。
蒂姆·霍尔(Tim Hall)在他的文章中有一些很好的例子,看看http://oracle-base.com/articles/misc/analytic-functions.php
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句