在SQL Oracle中,通过只匹配前两个十进制值来舍入一个数字

在SQL Oracle中,通过只匹配前两个十进制值来舍入一个数字,sql,oracle,group-by,Sql,Oracle,Group By,我试图将价格四舍五入的基础上进行分组,如果小数点后第二位是直接匹配的话。所以16.49应该与16.4991分组,数量(总是完美匹配)。向上或向下取整并不总是有效的。圆不是最好的方式来处理这样的事情吗?如果有人能给我指出一个更好的方向 PRICE QUANTITY 16.49 1460 16.4991 1460 15.63 38638 15.6352 38638 使用trunc而不是在注释中建议使用“无”名称的@a_horse_ with tbl as ( select 16.4

我试图将价格四舍五入的基础上进行分组,如果小数点后第二位是直接匹配的话。所以16.49应该与16.4991分组,数量(总是完美匹配)。向上或向下取整并不总是有效的。圆不是最好的方式来处理这样的事情吗?如果有人能给我指出一个更好的方向

PRICE   QUANTITY
16.49   1460
16.4991 1460
15.63   38638
15.6352 38638

使用
trunc
而不是在注释中建议使用“无”名称的@a_horse_

with tbl as (
  select 16.49 price,   1460 quantity from dual union all
  select 16.4991, 1460 from dual union all
  select 15.63,   38638 from dual union all
  select 15.6352, 38638 from dual
 )
 select trunc(price, 2), quantity, count(*)
   from tbl
  group by trunc(price, 2), quantity

15.63和15.6352是否应该合并?如果有一个15.6314怎么办?
16.4991
四舍五入到两位小数将产生
16.50
而不是
16.49
——听起来好像你只想在第二位小数后去掉小数。在Postgres中,你可以使用trunc(16.4991,2)。是的,这两者应该结合起来。因此,任何15.63xxxxxxx的值都应该与15相结合。63@a_horse_with_no_name忽略我之前的评论;你的评论是我发布的。你可以试试。您的解决方案部分取决于您的数据库系统,部分取决于您试图完成的业务逻辑。