The COUNTDISTINCT
function counts the number of distinct values for an attribute.
The COUNTDISTINCT
function returns the number of unique values in a field for each GROUP BY
result. COUNTDISTINCT
can be used for both single-assign and multi-assigned attributes.
Note that because sets are never NULL but can be empty, COUNTDISTINCT
will also evaluate a record with an empty set (that is, an empty set is returned for any record that does not have an assignment for the specified multi-assign attribute). See the second example below for how to ignore empty sets from the results.
COUNTDISTINCT
function is:
COUNTDISTINCT(<attribute>)
where attribute is either a multi-assign or single-assign attribute.COUNTDISTINCT example
Record 1: Size=small, Color=red Record 2: Size=small, Color=blue Record 3: Size=small, Color=red Record 4: Size=small
RETURN Result AS SELECT COUNTDISTINCT (Color) as Total FROM ProductState GROUP BY Size
Record 1: Size=small, Total=3
Because all of the records have the same value for Size, there is only one group, and thus only one record. For this group, the value of Total is 3 because there are two non-empty sets with unique values for the Color attribute (red and blue), and an empty set is returned for Record 4.
COUNTDISTINCT
with a multi-assign attribute and want to exclude empty sets, use a WHERE
clause with the IS NOT EMPTY
function, as in this example:
RETURN Result AS SELECT COUNTDISTINCT(Color) WHERE (Color IS NOT EMPTY) AS Total FROM ProductState GROUP BY Size
Record 1: Size=small, Total=2because the empty set for Record 4 is not counted.