这是我所要做的事情的一个简化版本。我试图根据用户总共走了多少英里来对他们进行排名。
该数据存储在名为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。发生了什么?正如我所说的,这是一个简化的示例。在我的实际案例中,当我使用ROUND
和LENGTH
这样的函数时,不仅舍入是错误的,而且整个集合的排名也是错误的:
ROW_NUMBER() OVER (ORDER BY (SUM(LENGTH(reports.comments)) + SUM(report_items.report_items_characters_number)) DESC) AS ranking
1条答案
按热度按时间6uxekuva1#
我无法在8.0.30中复制它:https://dbfiddle.uk/y04TcMlp
我怀疑这是一个已经修复的错误。我建议你升级。