0

私のデータベースには、次のようなエントリがあります。

username score     date
User1      10    1/1/2013
User2       4    1/1/2013
User3       4    1/1/2013
User4       5    1/1/2013

...

User1       1    10/1/2013
User2       3    10/1/2013
User3       4    10/1/2013
User4      17    10/1/2013

そして、どのユーザーのスコアが最も変化したかを見つける必要があります。約 3 万人のユーザーがいるため、それほど簡単ではありません。だから私はそれらすべてを照会して計算するよりももっとエレガントな方法があると思った

UPD:また、日付はdatetime形式で保存され、スコアが保存された正確な時刻はわかりません...

4

2 に答える 2

0

そのテーブル レイアウトでスコア差が最大のユーザーを取得するとします。

Select username, max(score) 
from (
    select C1.username, abs(C1.score - C2.score) score from table_name C1, table_name C2 
    where C1.username = C2.username and C1.score <> C2.score
) as T;
于 2013-05-16T20:05:12.990 に答える