簡體   English   中英

Oracle SQL Developer-計數功能

[英]Oracle SQL Developer - Count function

產量

這是來自table1的select *的輸出,我對count函數有疑問...我想對那個NULL進行計數,以便執行此操作是正確的選擇:

從fecha_devolucion為null的表1中選擇count(*)->這給了我正確的答案計數1,但是如果我這樣做:

select count(fecha_devolucion)
  from table1
  where fecha_devolucion is null --> this returns 0, why? Isn't the same syntax? 

從表中選擇特定字段和*有什么區別?

從文檔( http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions032.htm ):

如果指定expr,則COUNT返回expr不為null的行數。 ...

如果指定星號(*),則此函數返回所有行...

換句話說,COUNT(fecha_devolucion)計算該列的非空值。 COUNT(*)計算行總數,而不管其值如何。

讓我們比較兩個查詢:

select count(*)
from table1
where fecha_devolucion is null;

select count(fecha_devolucion)
from table1
where fecha_devolucion is null;

我認為您誤解了count()函數。 該函數計算其參數列表中非NULL值的數量。 使用常數或* ,它將計算所有行。

因此,第一個計數所有匹配的行。 第二個計數fecha_devolucion所有非NULL值。 但是由於where子句,因此沒有此類值。

順便說一句,您還可以執行以下操作:

select sum(case fecha_devolucion is null then 1 else 0 end) as Nullfecha_devolucion
from table1;

這是獲取計數的另一種方法:

SELECT SUM(NVL(fecha_devolucion,1)) FROM table1 WHERE fecha_devolucion IS NULL;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM