我想从特定的列中获取最大整数,如果存在,则不包括始终为最大值的值。数据可能如下所示:
score, empid
1 3
3 3
10 3
1 5
2 5
1 8
2 8
3 8
10 8在上面的例子中,我希望MAX score小于10。MAX(score)在这种情况下不起作用,因为它会返回10。结果应该是这样的:
score, empid
3 3
2 5
3 8有什么建议吗?
发布于 2012-04-12 02:22:37
select max(score) , empid
from table
where score < (select max(score) from table )
group by empid发布于 2012-04-12 02:34:06
以下是另一种方法:
SELECT
MAX(CASE WHEN score = 10 THEN NULL ELSE score END) AS [max_score],
empid
FROM
table
GROUP BY
empid如果您希望避免子选择,这可能更可取。
发布于 2017-10-06 14:07:36
遵循Ben English的answer,如果你只排除了1个值,你也可以使用NULLIF来减少输入。
SELECT MAX(NULLIF(score, 10)), ...
FROM ...
GROUP BY ...使用CASE WHEN可以排除一定范围的值。这里我们排除所有分数大于10的分数:
SELECT MAX(CASE WHEN score > 10 THEN NULL ELSE score), ...
FROM ...
GROUP BY ...下面是用于减少输入的IIF版本:
SELECT MAX(IIF(score > 10, NULL, score)), ...
FROM ...
GROUP BY ...https://stackoverflow.com/questions/10111669
复制相似问题