Sì, il valore di ritorno della funzione "conteggio" è sempre un numero intero non nullo, senza eccezioni.
Detto questo, si può essere più interessati al valore di ritorno della vostra interrogazione, che è in realtà un risultato set. Se questo è il caso, devi semplicemente considerare se la tua query include una clausola "group by".
A non raggruppata interrogazione con funzioni di aggregazione come
select count(*), sum(*), max(*), min(*) from table
produce un set di risultati con un singolo record contenente il valore restituito (s) della funzione di aggregazione (s). In questo caso, il set di risultati avrà sempre esattamente un record, con colonne contenenti i valori di ritorno di qualsiasi funzione aggregata che hai incluso. All'interno di questo record solitario, il valore di ritorno del conteggio sarà sempre un numero intero non nullo, mentre i valori di ritorno delle altre funzioni di aggregazione quali min, max e somma potrebbero essere nulli. Nell'esempio precedente, il record restituito può essere "zero, null, null, null", ma non sarà mai "null, null, null, null", poiché count non restituisce mai null. Quindi, se stai chiamando solo "conta", allora quella colonna in quel record restituito conterrà sempre il valore di ritorno non nullo del conteggio; quindi puoi essere certo che il valore di ritorno scalare della tua query di conteggio sarà sempre un numero intero non nullo.
D'altra parte, un query raggruppata con funzioni di aggregazione come
select count(*), sum(*), max(*), min(*) from table group by column
produce un set di risultati con zero o più record dove ciascun record contiene il valore di ritorno della funzione di aggregazione (s) per ciascun gruppo identificato. In questo caso, se non ci sono gruppi identificati, non ci sono gruppi per l'esecuzione delle funzioni aggregate, le funzioni non vengono mai eseguite e il "valore di ritorno della query" sarà un insieme vuoto senza alcun record.
provarlo su un tavolo con nessun record per vedere i risultati:
create table #t (c int);
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t; --returns one record {0, null, null, null}
select COUNT(c), MIN(c), MAX(c), SUM(c) from #t group by c; --returns no records
drop table #t;
Quindi, se si sta chiamando conteggio, min, max, o somma, è importante capire non solo i valori di ritorno delle singole funzioni di aggregazione, ma anche il "valore di ritorno" della query stessa e ciò che contiene il set di risultati.
È troppo difficile da testare? –
@col yea :) ',' –
@col non provando e solo facendo clic qui, suppongo che vuole che gli spettatori facciano clic su "Upvote" alle sue domande. – raj