SELECT  TT.FILE_ID
,       TT.FILE_NAME
,       TT.TABLESPACE_NAME

,       ROUND(TT.BYTES / 1024 / 1024)                       AS "TOTAL_SIZE(MB)"

,       ROUND(TF.BYTES / 1024 / 1024)                       AS "FREE_SIZE(MB)"
,       ROUND((TT.BYTES - TF.BYTES) / 1024 / 1024)          AS "USED_SIZE(MB)"

,       ROUND(TF.BYTES / TT.BYTES * 100, 1)                 AS "FREE_PERCENT(%)"
,       ROUND((TT.BYTES - TF.BYTES) / TT.BYTES * 100, 1)    AS "USED_PERCENT(%)"

,       TT.BLOCKS                                           AS TOTAL_BLOCK
,       TF.BLOCKS                                           AS FREE_BLOCKS

,       TT.STATUS
,       TT.AUTOEXTENSIBLE
,       TT.ONLINE_STATUS
FROM    DBA_DATA_FILES TT
JOIN   (SELECT  TF.FILE_ID
        ,       TF.TABLESPACE_NAME
        ,       SUM(TF.BYTES)       AS BYTES
        ,       SUM(TF.BLOCKS)      AS BLOCKS
        FROM DBA_FREE_SPACE TF
        GROUP BY    TF.FILE_ID
        ,           TF.TABLESPACE_NAME) TF  ON  TF.FILE_ID  = TT.FILE_ID
ORDER BY TT.TABLESPACE_NAME;