如何在Oracle SQL * Plus中输出行数计算

问题描述 投票:0回答:1

我正在将SQL * Plus与Oracle 11.2一起使用,并且我知道如何输出符合某些条件的行数,例如:

select count(*) from MY_TABLE where MY_FIELD is not null;

另外,很容易输出MY_TABLE中的所有行:

select count(*) from MY_TABLE;

但是,如何在SQL * Plus中输出两个计数的比率,即如何在SQL * Plus中对SQL命令的输出进行计算?


一些笔记

  1. 我对此很感兴趣,因为我有一个长期运行的后台进程,该进程会随着时间的推移将MY_FIELD列中的值从null更新为文本,因此很高兴能很快在SQL * Plus中看到行的比例已经完成。

  2. 我尝试过

    (select count(*) from MY_TABLE where MY_FIELD is not null) / (select count(*) from MY_TABLE);
    

    但是这显然不起作用,因为它不是适当的SQL命令。

sql oracle oracle11g sqlplus
1个回答
2
投票

count(<expression>)仅对<expression>不是NULL的行进行计数,除非<expression>*,否则它将对任何行进行计数。因此,您可以使用:

SELECT count(my_field)
       /
       count(*)
       FROM my_table;

但是如果填充值的其他过程仅在一个事务中运行,并且偶尔不COMMIT一次-您没有提到-在完成之前您将看不到任何更改,并且最后COMMIT秒。

© www.soinside.com 2019 - 2024. All rights reserved.