我写了一个查询
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
别名的范围不是全局的,仅在()
内部。
如何正确重写查询?
答案 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 ...
SELECT count(case when table_Comment = '' then null else table_Comment end) /
count(table_Comment) as PercentEmpty
FROM INFORMATION_SCHEMA.TABLES;