我意识到这可能是获取每列最大值的一种方式,但是我对ORACLE SQL还是比较陌生,我似乎无法使其正常工作。
我有两个表:比赛时间和参赛者,我正在尝试进行选择查询,如果他们在该特定比赛中表现最好,则将打印出参赛者表中的个人信息,例如姓名和电子邮件地址。每年。
参与者(参与者,姓名,电子邮件和电话都是Varchar2)
|PARTICIPANT | NAME | EMAIL | PHONE |
|P1 | Sam | x@yahoo | 123.. |
|P2 | Jerry| y@gmail | 456.. |
|P3 | Mike | z@gmail | 789...|
...
Competition_Times(年份是数字(4,0),类型和参与者是varchar2,时间是日期(但是DD-MON-YYYY固定为1970年1月1日,所以只有小时和分钟很重要)
|YEAR | TYPE | PARTICIPANT | TIME |
|2020 | Comp 1 | P1 | 20:40|
|2020 | Comp 2 | P1 | 24:30|
|2020 | Comp 1 | P2 | 21:40|
|2020 | Comp 1 | P3 | 18:24|
|2019 | Comp 1 | P1 | 25:00|
|2019 | Comp 1 | P3 | 25:39|
|2019 | Comp 2 | P1 | 22:00|
|2019 | Comp 1 | P2 | 22:50|
....
例如:在2020年的comp 1中,我希望必须与ID为P3的参与者联系,在2019年的comp 1中,我希望能够以ID P2的参与者联系。
YEAR | TYPE | NAME | EMAIL
2020 | Comp 1| Mike | z@gmail
2019 | Comp 1| Jerry| y@gmail
[我意识到这将需要一个外部查询,该查询将比赛的年份传递给内部查询,但是即使经过多次类似性质的问题的答复,我似乎也无法弄清楚。
这是我正在使用的当前代码:
SELECT YEAR, TYPE, NAME, EMAIL FROM COMPETITION_TIMES, PARTICIPANTS WHERE (SELECT * FROM COMPETITION_TIMES WHERE TYPE = 'Comp 1' AND ROWNUM = 1 ORDER BY TIME ASC)
如果有人能指出我应该如何利用相关子查询,或者让我指出围绕这样的问题的类似问题,将不胜感激!
我意识到这可能是获取每列最大值的一种方式,但是我对ORACLE SQL还是比较陌生,我似乎无法使其正常工作。我有两个表:比赛时间和...
您可以通过各种方式获取参与者编号。一个使用相关的子查询: