sql - 当两次尝试具有相同的值时,SQL JOIN 在多个用户尝试中选择 MAX 值返回两个值
问题描述
大家,早安!
我有一个非常简单的 SELECT/JOIN 语句,它从分班测试中获取一些导入的数据,并返回用户所做的最高得分尝试,即最好的分数。用户可以多次参加这个测试,所以我们只是使用最好的尝试。如果用户进行了多次尝试(例如,两次)并且两次都获得相同的分数怎么办?
我当前的查询最终返回了这两个记录,因为它们都是相等的,所以 MAX() 返回两者。目前还没有设置主键——我在下面使用的查询是我希望添加到另一个表的 INSERT 语句中的查询,一旦我只获得每个用户(StudentID)的一次最佳尝试,并设置它StudentID 作为键。所以你看到我的问题...
我在查询中尝试了一些 DISTINCT 或 TOP 语句,但要么我将它们放入查询的错误部分,要么它们仍然为尝试得分相同的用户返回两条记录。有什么建议么?
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;
推荐阅读
- python - 如何在熊猫中旋转这个数据框
- python - 无法在 Python 中发出 HTTP 请求
- android - IndexOutOfBoundsException: Invalid index 0, size is 0. 我该如何解决这个问题
- c# - 如何解决 WACK 问题“发现错误:私有代码签名测试遇到以下错误:”
- javascript - Vuex状态在突变后不更新
- batch-file - 批量重命名文件,合并列.csv?
- python - 为什么我无法使用 clf(**params) 解压 sklearn 模型的参数?
- c# - 查询具有远程计算的相关实体计数的实体
- postgresql - 在 sql 转储中设置 search_path
- javascript - 拆分 2 个不同长度的字符串返回相同的值