一、使用什么函数?
1.count(*)/count(字段名)
COUNT(*) 计算表中总的行数,无论某列有数值或者为空值。
COUNT(字段名)计算指定列下总的行数,计算时将忽略空值的行。
2.concat(str1, str2,...)
返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
3.round(x,d) /round(x)
round(x,d) -- x指要处理的数,d是指保留几位小数
round(x,d) -- 同round(x,0),即不保存小数
二、具体实例
1.sql语句
SELECT
create_time AS time,
SUM( CASE WHEN state = "online" THEN 1 ELSE 0 END ) AS onlineCnt,-------计算online状态数量
CONCAT( ROUND( SUM( CASE WHEN state = "online" THEN 1 ELSE 0 END ) / COUNT( state ) * 100, 2 ), '%' ) AS per -------计算百分比
FROM
dev_device_history
WHERE
create_time <= '2023-07-26' AND create_time >= '2023-07-12'
AND product_id = "ywy_aep"
AND factory IN ( "杭水科技" )----------筛选条件
GROUP BY
create_time --------按时间分组
SUM( CASE WHEN state = "online" THEN 1 ELSE 0 END ) AS onlineCnt------计算online状态数量
COUNT( state )-------总数量
CONCAT( ROUND( SUM( CASE WHEN state = "online" THEN 1 ELSE 0 END ) / COUNT( state ) * 100, 2 ), '%' ) AS per--------计算所占全部状态的百分比
2.输出结果
完结撒花 欢迎大家留言