我在数据库中有以下架构和数据:
Create table Scores (Id int, Score NUMBER(3,2))
Truncate table Scores
insert into Scores (Id, Score) values ('1', '3.5')
insert into Scores (Id, Score) values ('2', '3.65')
insert into Scores (Id, Score) values ('3', '4.0')
insert into Scores (Id, Score) values ('4', '3.85')
insert into Scores (Id, Score) values ('5', '4.0')
insert into Scores (Id, Score) values ('6', '3.65')
我写了以下查询:
SELECT Score, DENSE_RANK() OVER (ORDER BY Score DESC) AS Rank FROM Scores;
在大多数结果上效果很好。但是有时候我得到Scores
的值,结尾是0
和3
,例如:57.43000000000000003
。
有人可以解释为什么会发生吗?
更新:
解决以下问题:https://leetcode.com/problems/rank-scores/
添加了ROUND(Score, 2)
,它可以正常工作。但仍不清楚尾随零。