Skip to content

Commit

Permalink
SQL: [Docs] Add example for custom bucketing with CASE (#41787)
Browse files Browse the repository at this point in the history
* SQL: [Docs] Add example for custom bucketing with CASE

Add a TIP on how to use CASE to achieve custom bucketing
with GROUP BY.

Follows: #41349

* address comments

* address comment
  • Loading branch information
matriv authored May 6, 2019
1 parent 59eeaa0 commit eb5f5d4
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 0 deletions.
24 changes: 24 additions & 0 deletions docs/reference/sql/functions/conditional.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,30 @@ an error message would be returned, mentioning that *'foo'* is of data type *key
which does not match the expected data type *integer* (based on result *10*).
===============================

[[sql-functions-conditional-case-groupby-custom-buckets]]
===== Conditional bucketing

CASE can be used as a GROUP BY key in a query to facilitate custom bucketing
and assign descriptive names to those buckets. If, for example, the values
for a key are too many or, simply, ranges of those values are more
interesting than every single value, CASE can create custom buckets as in the
following example:

[source, sql]
SELECT count(*) AS count,
CASE WHEN NVL(languages, 0) = 0 THEN 'zero'
WHEN languages = 1 THEN 'one'
WHEN languages = 2 THEN 'bilingual'
WHEN languages = 3 THEN 'trilingual'
ELSE 'multilingual'
END as lang_skills
FROM employees
GROUP BY lang_skills
ORDER BY lang_skills;

With this query, one can create normal grouping buckets for values _0, 1, 2, 3_ with
descriptive names, and every value _>= 4_ falls into the _multilingual_ bucket.

[[sql-functions-conditional-coalesce]]
==== `COALESCE`

Expand Down
4 changes: 4 additions & 0 deletions docs/reference/sql/language/syntax/commands/select.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -204,6 +204,10 @@ Multiple aggregates used:
include-tagged::{sql-specs}/docs/docs.csv-spec[groupByAndMultipleAggs]
----

[TIP]
If custom bucketing is required, it can be achieved with the use of `<<sql-functions-conditional-case, CASE>>`,
as shown <<sql-functions-conditional-case-groupby-custom-buckets, here>>.

[[sql-syntax-group-by-implicit]]
===== Implicit Grouping

Expand Down

0 comments on commit eb5f5d4

Please sign in to comment.