報表直接輸出「投訴率 12.34%」格式,避免應用層二次格式化。
CONCAT(str1, str2, ...):字串拼接,任一參數為 NULL 則結果為 NULLLEFT(str, len):從左截取指定長度字元SELECT
category,
count,
total,
CONCAT(LEFT(count / total * 100, 5), '%') AS rate_percent
FROM (
SELECT
complaint_type AS category,
COUNT(*) AS count,
(SELECT COUNT(*) FROM complaints) AS total
FROM complaints
GROUP BY complaint_type
) t;
| category | count | total | rate_percent |
|---|---|---|---|
| 服務態度 | 123 | 1000 | 12.3% |
| 產品品質 | 87 | 1000 | 8.7% |
| 物流速度 | 200 | 1000 | 20.0% |
CONCAT(ROUND(count / total * 100, 2), '%') AS rate_percent
-- 12.30%、8.70%、20.00%
total = 0 會除零錯誤 → NULLIF(total, 0) 或 CASE WHEN total=0 THEN '0%' ...1.0 或 CAST(... AS DECIMAL(10,4))