4

次のようなテーブルがあります。

   Date   | AttributeId | Score |
4/4/2013         1         0.64      
4/6/2013         2         0.35
4/6/2013         1         0.86
4/4/2013         5         0.34
4/4/2013         4         0.23
4/7/2013         3         0.54
4/8/2013         1         0.66

特定の AttributeID の最後のオカレンスのみを取得するように、MS SQL でクエリを作成できますか? 上記の例から、クエリは次を返します。

   Date   | AttributeId | Score |     
4/6/2013         2         0.35
4/4/2013         5         0.34
4/4/2013         4         0.23
4/7/2013         3         0.54
4/8/2013         1         0.66

役立つ場合は、AttributeID が 5 つ (1 ~ 5) しかなく、変更されないことがわかっています。

今のところ、最後の 15 レコードをクエリして (これらのレコードに 5 つの属性がすべて含まれていることを期待しています)、アプリケーション レベルで 5 つの属性すべての最新スコアを抽出しています。
より良い解決策はありますか?

編集:
また、DateUserIdAttributeIdおよびがある場合Score、結果を でグループ化できUserIdますか?
あなたの回答を試してみたところ、最新の結果しか得られないことがわかりましたUserId
ごめんね、UserIdもっと早く言う べきだった

編集 2: すべてのユーザーの属性ごとに最新のスコアを取得し、属性全体のスコアを平均する必要があります。サンプルは次のようになります。

   Date   |  UserId  | AttributeId | Score |
4/4/2013        1           1         0.64      
4/6/2013        1           1         0.35
4/6/2013        2           1         0.86
4/4/2013        1           3         0.34
4/4/2013        2           3         0.23
4/7/2013        2           1         0.54
4/8/2013        1           5         0.69
4/4/2013        2           4         0.27
4/7/2013        2           2         0.54
4/9/2013        1           4         0.66
4/9/2013        2           2         0.58
4/10/2013       1           4         0.66
4/9/2013        1           2         0.33
4/11/2013       2           5         0.10

最初の結果は次のようになります。

   Date   |  UserId  | AttributeId | Score |
4/6/2013        1           1         0.64      
4/9/2013        1           2         0.33
4/4/2013        1           3         0.34
4/10/2013       1           4         0.66
4/8/2013        1           5         0.69
4/7/2013        2           1         0.86
4/9/2013        2           2         0.58
4/4/2013        2           3         0.23
4/4/2013        2           4         0.27
4/11/2013       2           5         0.10

でスコアを平均した後の最後の結果UserId:

UserId | AverageScore |
   1           0.532     
   2           0.408 
4

2 に答える 2