詳細
受けた各テストの開始時間と停止時間 (期間) の差を見つけ、各テストの最高スコアと最低期間に従ってユーザーをランク付けしたいと考えています。最終的には、MySQL でこれを行うために PDO を使用します。これまでのところ、私はSQLに取り組んでいます。今はかなり近いと思いますが、確信が持てませんhow to combine the information into one query
。
私が持っているもの(未テスト)。
私は次のテーブルを持っていますtestresults
--------------------------------------------------------------------
| index | id | start | stop | score|
--------------------------------------------------------------------
| 1 | 23 | 2012-06-06 07:30:20 | 2012-06-06 07:30:34 | 100 |
--------------------------------------------------------------------
私の選択ステートメントでは、計算されたid
とを取得したいと考えています。score
duration
以下のクエリを使用して、今日受けたテストの期間を取得できます。
SELECT TIMESTAMPDIFF(SECOND,stop,start) AS duration
FROM testresults WHERE `start` >= DATE(NOW())
次に、ランクに基づいて結果を並べ替えます。スコアと持続時間に応じてランクが決定されます。一番上の場所は、最短の持続時間で最高のスコアになります.私は次のようなものでそれを行うことができると信じています:
ORDER BY score DESC, duration ASC
たぶん100エントリしか欲しいので、
LIMIT 100
質問
上記の情報を 1 つのクエリにまとめるにはどうすればよいですか?