1

私はテーブルを持っています

user problem problem_weight running_time

ユーザーを並べ替えたい

最初にproblem_weight の集計に従って、次に

最大重みの問題の最小 running_timeに従って衝突が発生した場合、

それでも解決しない場合は、acc. 後続するproblem_weightsのrunning_timesまで

私は最初の部分を行うことができます

SELECT user, SUM(problem_weight) AS weight
FROM myTable
GROUP BY user
ORDER BY weight

しかし、その後どのように進めるのですか?

例:

User1 problem1 100 10
User1 problem2  80  5
User2 problem1 100  8
User2 problem2  80  7

どちらのユーザーも合計スコアは同じ (180) ですが、user2 は重み 100 の問題 1 をより短い時間で解決しました。したがって、彼に勝ってもらいたいと思います。

彼 (user2) が同じ時間 (10 秒) を費やした場合、次の重み付けされた問題で彼 (user1) がより短い時間 (5 秒) を費やしたため、user1 が勝つはずです。

データはまだ acc でソートされていないことに注意してください。ただし、問題は直接 problem_weight にリンクされています。つまり、problem1 の重みは常に 100 になります。

4

1 に答える 1

0
SELECT user, 
SUM(problem_weight) AS weight 
FROM myTable GROUP BY user 
ORDER BY weight ASC/DESC
                ^include which one u want
于 2012-07-25T17:38:54.280 に答える