1、需求:
统计一张表中状态不同情况的占比,如何使用一条sql 满足需求
2、分析:
需要使用的mysql的 CONCAT : 一般用法主要是用于拼接。例如:
SELECT CONCAT('M','y','S','Q','L')
MySQL
format()函数:将数据内容格式化的,可以将数据格式化为整数或者带几位小数的浮点数(四舍五入)。
SELECT FORMAT(100.3111,0); // 取整 100
SELECT FORMAT(100.7654,3);//四舍 100.765
SELECT FORMAT(100.7655,3);//五入 100.766
case when语句 : 使用方法: mysql中也有像php语言中switch case 这样的语句
select getdate() as 日期,case month(getdate())
when 11 then '十一'
when 12 then '十二'
else substring('一二三四五六七八九十', month(getdate()),1)
end+'月' as 月份
这个问题答案有很多种,这里只是象征提供一个参考,最终sql写法 :
SELECT
CONCAT( FORMAT( 100 * SUM( CASE WHEN ans_type = 0 THEN 1 ELSE 0 END )/ COUNT(*), 2 ), "%" ) AS `通过率`,
CONCAT( FORMAT( 100 * SUM( CASE WHEN ans_type = 1 THEN 1 ELSE 0 END )/ COUNT(*), 2 ), "%" ) AS `算法拒绝`,
CONCAT( FORMAT( 100 * SUM( CASE WHEN ans_type = 2 THEN 1 ELSE 0 END )/ COUNT(*), 2 ), "%" ) AS `模型超时`
FROM
chats_ans
WHERE
`create_time` >= '2023-10-04 16:42:25';
SELECT
count(*)
FROM
chats_ans
WHERE
`create_time` >= '2023-10-04 16:42:25'
通过率 | 算法拒绝 | 模型超时 |
---|---|---|
88.33% | 8.77% | 2.90% |
评论 (0)