[英]How to output row count calculations in Oracle's SQL*Plus
我在 Oracle 11.2 中使用 SQL*Plus,我知道如何输出符合某些条件的行数,例如:
select count(*) from MY_TABLE where MY_FIELD is not null;
也很容易输出 MY_TABLE 中的所有行:
select count(*) from MY_TABLE;
但是,如何在 SQL*Plus 中输出两个计数的比率,即如何在 SQL*Plus 中对 SQL 命令的输出进行计算? .
一些注意事项:
我对此很感兴趣,因为我有一个长期运行的后台进程,它随着时间的推移将MY_FIELD
列中的值从null
为文本,因此很高兴在 SQL*Plus 中快速查看行的比例已经完成。
我试过
(select count(*) from MY_TABLE where MY_FIELD is not null) / (select count(*) from MY_TABLE);
但这显然不起作用,因为它不是正确的 SQL 命令。
count(<expression>)
将只计算<expression>
不是NULL
行,除非<expression>
是*
-- 然后它计算任何行。 所以你可以使用:
SELECT count(my_field)
/
count(*)
FROM my_table;
但是,如果填充值的另一个进程仅在一个事务中运行,并且不会每隔一段时间COMMIT
一次——您没有提到这一点——那么在完成并最终COMMIT
之前您将看不到任何更改。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.