获取通过计算空值完成的列的百分比

krx*_*krx 9 mysql sql

我有一个包含允许空值的列的表.如果值为null则不完整.我想计算完成百分比.

这可以通过SQL在MySQL中完成,还是应该获取总条目和总空条目并计算服务器上的百分比?

无论哪种方式,我都很困惑我需要如何分离variable_value以便我可以得到它的总结果以及它的总NULL结果.

SELECT
    games.id
FROM 
    games
WHERE 
    games.category_id='10' AND games.variable_value IS NULL
Run Code Online (Sandbox Code Playgroud)

这给了我所有variable_value为NULL的游戏.我如何扩展这个以使我得到TOTAL游戏或游戏NOT NULL以及它?

表格架构:

id(INT Primary Auto-Inc)

category_id(INT)

variable_value(TEXT允许空值默认值:NULL)

Car*_*lin 19

将"Count"与列名一起使用时,不包括空值.所以要使计数或百分比不为空,只需这样做......

SELECT
   count(1) as TotalAll,
   count(variable_value) as TotalNotNull,
   count(1) - count(variable_value) as TotalNull,
   100.0 * count(variable_value) / count(1) as PercentNotNull
FROM
   games
WHERE
   category_id = '10'
Run Code Online (Sandbox Code Playgroud)

  • +1:这也是我的想法 - 计算列,将金额除以非空实例的数量.我在想`SUM(COALESCE(value,0)/ COUNT(...)`我自己...... (3认同)

Tom*_*m H 5

SELECT
    SUM(CASE WHEN G.variable_value IS NOT NULL THEN 1 ELSE 0 END)/COUNT(*) AS pct_complete
FROM
    Games G
WHERE
    G.category_id = '10'
Run Code Online (Sandbox Code Playgroud)

您可能需要对SUM()进行一些转换,以便获得小数.