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のみのソリューションであることに注意してください。

于 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 に答える