0

我有一个包含高中足球比赛分数的小型数据库,用户可以在其中输入分数。

我需要找出每个季度末的最终得分是多少

鉴于数据,我对如何做到这一点有点困惑:

成绩表

create table FINAL_score

    ( scoreID varchar2(10) primary key,

    gameID varchar2(5) REFERENCES FINAL_game(gameID),

    userID varchar2(5) REFERENCES FINAL_user(userID),

    curtime timestamp,

    qtr number(1),

    hscore number(2) not null,

    ascore number(2) not null);


insert into FINAL_score values ('s001', 'g001', 'u001', '10-DEC-12 02:10:00', 1, 7, 3);

insert into FINAL_score values ('s002', 'g001', 'u002', '10-DEC-12 02:12:00', 1, 7, 3);

insert into FINAL_score values ('s003', 'g001', 'u001', '10-DEC-12 02:15:00', 1, 7, 10);

insert into FINAL_score values ('s004', 'g001', 'u002', '10-DEC-12 02:28:00', 2, 14, 13);

insert into FINAL_score values ('s005', 'g001', 'u001', '10-DEC-12 02:30:00', 2, 14, 16);

insert into FINAL_score values ('s006', 'g001', 'u001', '10-DEC-12 02:55:00', 3, 14, 19);

insert into FINAL_score values ('s007', 'g001', 'u002', '10-DEC-12 02:57:00', 3, 14, 16);

insert into FINAL_score values ('s008', 'g001', 'u001', '10-DEC-12 03:15:00', 4, 17, 26);

insert into FINAL_score values ('s009', 'g001', 'u002', '10-DEC-12 03:30:00', 4, 20, 29);

我想我需要使用子查询,但我只是不知道如何实现它

select hscore, ascore
from FINAL_score
where (....)

任何帮助将不胜感激,谢谢

4

2 回答 2

1

获取每场比赛发送的最后一条记录,执行以下操作:

select hscore, ascore
from (select * from FINAL_score 
      order by curtime desc) x
group by gameId;

对于特定游戏,在其中添加 where 子句:

select hscore, ascore
from (select * from FINAL_score 
      where gameId = ?
      order by curtime desc) x
group by gameId;

请注意,这是一个 mysql-only 解决方案。

于 2012-12-12T22:09:10.003 回答
0

分数实际上是在整个游戏中单调递增的(只会上升,不会下降)。因此,您可以采取捷径并执行以下操作:

select gameid, qtr, max(hscore), max(ascore)
from final_score
group by gameid
于 2012-12-12T22:18:49.557 回答