ローガン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;