mysql 当row_number()函数存在时,ROUND不起作用

pokxtpni  于 2022-12-26  发布在  Mysql
关注(0)|答案(1)|浏览(249)

这是我所要做的事情的一个简化版本。我试图根据用户总共走了多少英里来对他们进行排名。
该数据存储在名为walks的表中,用户每次行走时,都会添加一个条目。

create temporary table walks
(
    id       int unsigned auto_increment primary key,
    user_id  int unsigned             not null,
    miles_walked float unsigned default '0' not null,
    date date not null
);

要填写表格:
x一个一个一个一个x一个一个二个x

select user_id,
       SUM(miles_walked) as miles_walked_total,
       ROUND(SUM(miles_walked), 1) as miles_walked_total_rounded,
       row_number() over (order by SUM(miles_walked) desc)  as miles_rank
from walks
group by user_id
order by user_id

如您所见,对于id为2和3的用户,舍入是WRONG。发生了什么?正如我所说的,这是一个简化的示例。在我的实际案例中,当我使用ROUNDLENGTH这样的函数时,不仅舍入是错误的,而且整个集合的排名也是错误的:

ROW_NUMBER() OVER (ORDER BY (SUM(LENGTH(reports.comments)) + SUM(report_items.report_items_characters_number)) DESC) AS ranking
6uxekuva

6uxekuva1#

我无法在8.0.30中复制它:https://dbfiddle.uk/y04TcMlp
我怀疑这是一个已经修复的错误。我建议你升级。

相关问题