mysql分組統計佔比/百分比

需求:統計當前數據庫user_tasks表中,不一樣status字段值對應的記錄條數及佔比sql

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函數:

  1. 功能:字符串拼接
  2. 語法:concat(str1,str2),返回結果爲鏈接參數產生的字符串,若是有任何一個參數爲null,則返回值爲null。
  3. 示例:SELECT CONCAT('hello','world')
  4. 進階:concat_ws()函數,和concat()同樣,將多個字符串鏈接成一個字符串,可是能夠一次性指定分隔符。eg:

round()函數:

  1. 功能:對數據進行四捨五入
  2. 語法:round(x,d):x爲需處理的數據,d爲小數點後需保留的位數,能夠爲正數,也能夠是負數(表示小數點前需爲0的位數)
  3. 示例: