oracle语法查询

oracle syntax query

select line_number, times
 FROM LINE
  JOIN LINE_STOP  ON LINE.ID=LINE_STOP.LINE_ID
  JOIN PASSAGE    ON LINE.STOP_ID = PASSAGE.LINE_STOP_ID
where times =
(select count(*) 
from passage
where times between 500 and 620);

我正在尝试计算我有一个数字在 500 到 620 之间的次数并按 line_number 排序。

它给了我一个 table 的好列,但没有价值。

这些是我的 tables:

CREATE TABLE Line (
ID              NUMBER(5,0) PRIMARY KEY,
Line_Number     NUMBER(3,0) NOT NULL,
Direction       VARCHAR2(5) NOT NULL,
Day_Week        VARCHAR2(3) NOT NULL,
Stop_ID         NUMBER(5,0) CONSTRAINT Line_Stop_FK REFERENCES Stop);



CREATE TABLE Line_Stop (
ID          NUMBER(5,0) PRIMARY KEY,
Line_ID     NUMBER(5,0) NOT NULL CONSTRAINT Line_Stop_Line_FK REFERENCES Line,
Stop_ID     NUMBER(5,0) NOT NULL CONSTRAINT Line_Stop_Stop_FK REFERENCES Stop

);

CREATE TABLE Passage (
ID              NUMBER(5,0) PRIMARY KEY,
Line_Stop_ID    NUMBER(5,0) NOT NULL CONSTRAINT Passage_Line_Stop_FK REFERENCES Line_Stop,
Hours           NUMBER(2,0) NOT NULL,
Minutes         NUMBER(2,0) NOT NULL,
Times           Number(4,0) NOT NULL

);

这个 过滤 join 的时间介于 500620 之间,然后按 line_number计算出现的次数

select line_number, count(times)
 FROM LINE
  JOIN LINE_STOP  ON (LINE.ID=LINE_STOP.LINE_ID AND LINE.STOP_ID=LINE_STOP.STOP_ID)
  JOIN PASSAGE    ON LINE.STOP_ID = PASSAGE.LINE_STOP_ID
where times between 500 and 620
group by line_number
order by line_number;