MySQL конвертировать байты в килобайты, мегабайты, гигабайты

У меня есть таблица журналов, которая хранит файлы разных размеров в байтах. Я хочу иметь возможность запрашивать базу данных и возвращать наименьшее возможное число с плавающей запятой, которое было конвертировано в МБ ГБ и т. Д. В настоящее время я могу вернуть значение в МБ, но как мне продолжить деление дальше на наименьшее значение и добавить единицу измерения?

SELECT CONCAT( ROUND( SUM( data_transferred ) /1048576, 2 ) ,  ' MB' ) 
FROM  `logs`

Любая помощь будет оценена.

ОБНОВИТЬ:

На основании предоставленной ссылки voodoo417 я обновил свой запрос следующим образом, который выведет наиболее релевантный размер файла с двумя десятичными разрядами и добавит единицу измерения (1000 байт, 1 кБ, 500 МБ, 2 ГБ и т. Д.):

SET @bytes := (SELECT SUM(data_transferred) FROM wp_ddownload_statistics);

SELECT
    CASE
WHEN ABS(@bytes) < 1024 THEN CONCAT( ROUND( @bytes, 2 ), ' Bytes')
      WHEN ABS(@bytes) < 1048576 THEN CONCAT( ROUND( (@bytes/1024), 2 ), ' KB')
      WHEN ABS(@bytes) < 1073741824 THEN CONCAT( ROUND( (@bytes/1048576), 2 ), ' MB')
      WHEN ABS(@bytes) < 1099511627776 THEN CONCAT( ROUND( (@bytes/1073741824), 2 ), ' GB' )
      WHEN ABS(@bytes) < 1125899906842624 THEN CONCAT( ROUND( (@bytes/1099511627776), 2 ), ' TB')
      WHEN ABS(@bytes) < 1152921504606846976 THEN CONCAT( ROUND( (@bytes/1125899906842624), 2 ), ' PB' )
      WHEN ABS(@bytes) < 1180591620717411303424 THEN CONCAT( ROUND( (@bytes/1152921504606846976) ,2), ' EB' )
      WHEN ABS(@bytes) < 1208925819614629174706176 THEN CONCAT( ROUND( (@bytes/1180591620717411303424), 2), ' ZB' )
      WHEN ABS(@bytes) < 1237940039285380274899124224 THEN CONCAT( ROUND( (@bytes/1208925819614629174706176), 2), ' YB' )
      WHEN ABS(@bytes) < 1267650600228229401496703205376 THEN CONCAT( ROUND( (@bytes/1237940039285380274899124224), 2), ' BB' )
    END

Ответы на вопрос(4)

Ваш ответ на вопрос