両方の試みが同じ値を有する場合SQLは、複数のユーザの試み戻るうちの2つの値がMAXの値を選択するJOIN

ローガンSビショップ:

皆さん、おはようございます!

私はかなり単純なSELECTを持っている/プレースメントテストからいくつかのインポートされたデータを取得し、最高が行ったユーザー、最高のスコアを試みる得点返す文を登録しよう。私たちは最高の試みを使用するので、ユーザーは、このテストを複数回取ることができます。ユーザーが複数回試みますどのような場合(たとえば、それを2回かかります)、同じ得点は両方の時間を受け取りますか?

彼らは両方とも同じだとして、それらのレコード両方の返却までの私の現在のクエリが終了するので、MAXは()の両方を返します。このには主キーの設定はまだありません - 私は、以下の使用しているクエリは、私が唯一のユーザーごとに単一の最高の試み(StudentID)を得れば、別のテーブルのINSERT文に追加したいと考えています1、およびセットは、ということですキーとしてStudentID。だから、私の問題を参照してください...

私は私のクエリで数DISTINCTまたはTOPステートメントを試みたが、私は、クエリの間違った部分にそれらを入れているか、彼らはまだ全く同じ試みを獲得したユーザーのための2つのレコードを返すのいずれか。助言がありますか?

SELECT p.*
FROM
(SELECT 
    StudentID, MAX(PlacementResults) AS PlacementResults
    FROM AleksMathResults
    GROUP BY StudentID)
    AS mx
    JOIN AleksMathResults p ON mx.StudentID = p.StudentID AND mx.PlacementResults = p.PlacementResults
    ORDER BY
    StudentID
ゴードン・リノフ:

あなたのような音がしたいですrow_number()

SELECT amr.*
FROM (SELECT amr.*
             ROW_NUMBER() OVER (PARTITION BY StudentID ORDER BY PlacementResults DESC) as seqnum
      FROM AleksMathResults amr
     ) amr
WHERE seqnum = 1;

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=27603&siteId=1