如何显示不带注释的表的百分比?

时间:2018-12-11 11:36:12

标签: mysql sql

我写了一个查询

SELECT COUNT(c_all.table_comment) / COUNT(c_target.table_comment)
FROM (
    SELECT table_comment
    FROM (
        SELECT table_comment
        FROM INFORMATION_SCHEMA.TABLES
        ) AS c_all
    WHERE table_comment <> ''
    ) AS c_target;

但这给了我错误

  

错误代码:1054。“字段列表”中的未知列“ c_all.table_comment”

这是因为c_all别名的范围不是全局的,仅在()内部。

如何正确重写查询?

3 个答案:

答案 0 :(得分:2)

这应该可以解决您的问题:

select sum(case when table_comment <> '' then 1 else 0 end) / count(*)
from INFORMATION_SCHEMA.TABLES

它将返回非空注释的百分比。

答案 1 :(得分:1)

您可以尝试以下方法:

SELECT COUNT(CASE WHEN table_comment <> '' THEN 1 END)/count(1) 
total_comments_percentage 
FROM INFORMATION_SCHEMA.TABLES;

答案 2 :(得分:0)

还有另一种方法是依靠count()的固有能力来不计算NULL。然后只需将''替换为null ...

Demo

SELECT count(case when table_Comment = '' then null else table_Comment end) /
       count(table_Comment) as PercentEmpty
FROM INFORMATION_SCHEMA.TABLES;