mirror of https://github.com/apache/druid.git
Docs: add FILTER to sql query syntax (#12093)
* docs: add FILTER to sql query syntax * Update docs/querying/sql.md * Update docs/querying/sql.md * Update docs/querying/sql.md * Update docs/querying/sql.md * move and update FILTER section
This commit is contained in:
parent
b53e7f4d12
commit
6846622080
|
@ -307,16 +307,28 @@ the [segment internals](../design/segments.md#sql-compatible-null-handling) docu
|
||||||
|
|
||||||
## Aggregation functions
|
## Aggregation functions
|
||||||
|
|
||||||
Aggregation functions can appear in the SELECT clause of any query. Any aggregator can be filtered using syntax
|
|
||||||
like `AGG(expr) FILTER(WHERE whereExpr)`. Filtered aggregators will only aggregate rows that match their filter. It's
|
|
||||||
possible for two aggregators in the same SQL query to have different filters.
|
|
||||||
|
|
||||||
When no rows are selected, aggregate functions will return their initial value. This can occur when filtering results in
|
You can use aggregation functions in the SELECT clause of any query.
|
||||||
no matches while aggregating values across an entire table without a grouping, or, when using filtered aggregations
|
Filter any aggregator using the FILTER clause, for example:
|
||||||
within a grouping. What this value is exactly varies per aggregator, but COUNT, and the various approximate count
|
|
||||||
distinct sketch functions, will always return 0.
|
|
||||||
|
|
||||||
Only the COUNT, ARRAY_AGG, and STRING_AGG aggregations can accept the DISTINCT keyword.
|
```
|
||||||
|
SELECT
|
||||||
|
SUM(added) FILTER(WHERE channel = '#en.wikipedia')
|
||||||
|
FROM wikipedia
|
||||||
|
```
|
||||||
|
|
||||||
|
The FILTER clause limits an aggregation query to only the rows that match the filter.
|
||||||
|
Druid translates the FILTER clause to a native [filtered aggregator](aggregations.md#filtered-aggregator).
|
||||||
|
Two aggregators in the same SQL query may have different filters.
|
||||||
|
|
||||||
|
When no rows are selected, aggregation functions return their initial value. This can occur from the following:
|
||||||
|
* When no rows match the filter while aggregating values across an entire table without a grouping, or
|
||||||
|
* When using filtered aggregations within a grouping.
|
||||||
|
|
||||||
|
The initial value varies by aggregator. `COUNT` and the approximate count distinct sketch functions
|
||||||
|
always return 0 as the initial value.
|
||||||
|
|
||||||
|
In the aggregation functions supported by Druid, only `COUNT`, `ARRAY_AGG`, and `STRING_AGG` accept the DISTINCT keyword.
|
||||||
|
|
||||||
> The order of aggregation operations across segments is not deterministic. This means that non-commutative aggregation
|
> The order of aggregation operations across segments is not deterministic. This means that non-commutative aggregation
|
||||||
> functions can produce inconsistent results across the same query.
|
> functions can produce inconsistent results across the same query.
|
||||||
|
|
Loading…
Reference in New Issue