需求:统计当前数据库user_tasks表中,不同status字段值对应的记录条数及占比
sql语句:
SELECT
`status`,
number,
concat(round(number / total * 100.00, 2), '%') percent
FROM
(
SELECT
*
FROM
(
SELECT
`status`,
COUNT(1) number
FROM
`user_tasks`
GROUP BY
`status`
) t1
INNER JOIN(
SELECT
COUNT(1) total
FROM
`user_tasks`
) t2 ON 1 = 1
) t
解析:
concat函数:
- 功能:字符串拼接
- 语法:concat(str1,str2),返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。
- 示例:SELECT CONCAT('hello','world')
- 进阶:concat_ws()函数,和concat()一样,将多个字符串连接成一个字符串,但是可以一次性指定分隔符。eg:
round()函数:
- 功能:对数据进行四舍五入
- 语法:round(x,d):x为需处理的数据,d为小数点后需保留的位数,可以为正数,也可以是负数(表示小数点前需为0的位数)
- 示例: