| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 | [discrete][[esql-agg-count]]=== `COUNT`*Syntax*[source,esql]----COUNT([expression])----*Parameters*`expression`::Expression that outputs values to be counted.If omitted, equivalent to `COUNT(*)` (the number of rows).*Description*Returns the total number (count) of input values.*Supported types*Can take any field type as input.*Examples*[source.merge.styled,esql]----include::{esql-specs}/stats.csv-spec[tag=count]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/stats.csv-spec[tag=count-result]|===To count the number of rows, use `COUNT()` or `COUNT(*)`:[source.merge.styled,esql]----include::{esql-specs}/docs.csv-spec[tag=countAll]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/docs.csv-spec[tag=countAll-result]|===The expression can use inline functions. This example splits a string intomultiple values using the `SPLIT` function and counts the values:[source.merge.styled,esql]----include::{esql-specs}/stats.csv-spec[tag=docsCountWithExpression]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/stats.csv-spec[tag=docsCountWithExpression-result]|===[[esql-agg-count-or-null]]To count the number of times an expression returns `TRUE` usea <<esql-where>> command to remove rows that shouldn't be included:[source.merge.styled,esql]----include::{esql-specs}/stats.csv-spec[tag=count-where]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/stats.csv-spec[tag=count-where-result]|===To count the same stream of data based on two different expressionsuse the pattern `COUNT(<expression> OR NULL)`:[source.merge.styled,esql]----include::{esql-specs}/stats.csv-spec[tag=count-or-null]----[%header.monospaced.styled,format=dsv,separator=|]|===include::{esql-specs}/stats.csv-spec[tag=count-or-null-result]|===
 |