Проблема заключается в вашей модели данных.Я понимаю, что 2.66M - это не обязательно 2660.000, поэтому вы не хотите хранить целое число, а вместо этого сохраните 2.66M, чтобы указать точность.Это, однако, две части информации: значение и точность, поэтому используйте два столбца:
mytable
value | unit
-------+-----
98.06 | K
97.44 | K
929.14 | K
91.87 | K
2.66 | M
146.64 | K
14.29 | K
Вместе с таблицей поиска:
units
unit | factor
-----+--------
K | 1000
M | 1000000
Возможный запрос будет:
select *
from mytable
join units using (unit)
order by mytable.value * units.factor;
, где вы можете захотеть расширить предложение ORDER BY
на что-то вроде
order by mytable.value * units.factor, units.factor;
или применить некоторое округление или что-то еще, чтобы учесть точность двух, казалось бы, равных значений.