我试图选择一列中除最低值之外的所有值(GameScore),但是当有两个最低值时,我的代码会排除这两个值(我知道它为什么这样做,我只是不知道如何纠正它)并包括两个最低值之一)。
代码看起来像这样:
SELECT Id, SUM(Score) / COUNT(Score) AS Score
FROM
(SELECT Id, Score
FROM GameScore
WHERE Game_No = 1
AND Score NOT IN
(SELECT MIN(Score)
FROM GameScore
WHERE Game_No = 1
GROUP BY Id))
GROUP BY Id
因此,如果我从 5 个值中抽取,但其中一行仅得出 3 个分数,因为底部的两个分数相同,那么如何包含第四个分数?谢谢。
为了做到这一点,你必须以某种方式将它们分开;您当前的问题是两个最低分数相同,因此对任一值执行的任何(内)相等操作都会同等对待另一个值。
您可以使用类似分析查询的东西ROW_NUMBER() http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions156.htm#SQLRF06100唯一标识行:
select id, sum(score) / count(score) as score
from ( select id, score, row_number() over (order by score) as score_rank
from gamescore
where gameno = 1
)
where score_rank <> 1
group by id
ROW_NUMBER()
:
按照 order_by_clause 中指定的行的有序序列(从 1 开始)为应用它的每一行(分区中的每一行或查询返回的每一行)分配一个唯一的编号。
由于 ORDER BY 子句按 SCORE 升序排列,因此最低分数之一将被删除。这将是一个随机值,除非您向 ORDER BY 添加其他决胜条件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)