如何使用MySQL的AVG()函数输出无小数的整数结果?
解决SQL平均等待时长整数展示问题
你可以通过以下几种常用方法将小数形式的平均等待时长转换为整数:
1. 直接截断小数部分(向下取整)
使用FLOOR()函数,会直接舍去所有小数部分,比如29.8333会变成29:
SELECT FLOOR(AVG( TIMESTAMPDIFF(MINUTE, customer_service_ticket_raise_time, CURRENT_TIMESTAMP() ) )) AS avg_waiting_time FROM customer_service_ticket;
2. 四舍五入取整
如果需要按常规四舍五入规则处理,用ROUND()函数,29.8333会变成30,29.4则变成29:
SELECT ROUND(AVG( TIMESTAMPDIFF(MINUTE, customer_service_ticket_raise_time, CURRENT_TIMESTAMP() ) )) AS avg_waiting_time FROM customer_service_ticket;
3. 截断小数(正数场景与FLOOR效果一致)
用TRUNCATE()函数指定保留0位小数,直接截断小数部分:
SELECT TRUNCATE(AVG( TIMESTAMPDIFF(MINUTE, customer_service_ticket_raise_time, CURRENT_TIMESTAMP() ) ), 0) AS avg_waiting_time FROM customer_service_ticket;
或者通过CAST()将结果转换为无符号整数,同样会截断小数:
SELECT CAST(AVG( TIMESTAMPDIFF(MINUTE, customer_service_ticket_raise_time, CURRENT_TIMESTAMP() ) ) AS UNSIGNED) AS avg_waiting_time FROM customer_service_ticket;
这些方法适用于主流关系型数据库(如MySQL、MariaDB等),你可以根据业务需求选择合适的取整方式。
内容的提问来源于stack exchange,提问作者Shane
相关产品推荐
相关产品推荐

