您可以使用 Oracle 的 ROUND 函数来保留结果的两位小数,使用 TO_CHAR 函数来格式化结果并加上 % 符号,并使用 NULLIF 函数来避免在除数为 0 时发生错误。您的 SQL 语句可以改写为如下形式:
SELECT TO_CHAR(ROUND(COUNT(CASE WHEN k.customerid IS NOT NULL THEN 1 END) /
NULLIF(COUNT(CASE WHEN k.service_status IN (2, 6, 8) THEN 1 END), 0) * 100, 2), 'fm999.