mirror of
https://github.com/jbranchaud/til
synced 2026-01-02 22:58:01 +00:00
27 lines
702 B
Markdown
27 lines
702 B
Markdown
# Count The Number Of Trues In An Aggregate Query
|
|
|
|
The `sum` function is an aggregate function that allows you to sum up a bunch
|
|
of integers. What if you want to sum up a boolean column? You may want to know
|
|
how many times `true` appears in a collection of grouped records.
|
|
|
|
This can be done by mixing in a `case` statement.
|
|
|
|
```sql
|
|
select
|
|
author_id,
|
|
sum(case when available then 1 else 0 end)
|
|
from books
|
|
group by author_id;
|
|
```
|
|
|
|
Here, we are able to find out for each author how many books they have
|
|
available.
|
|
|
|
If we want to count `false` values, we can just invert the `sum` statement:
|
|
|
|
```sql
|
|
sum(case when available then 0 else 1 end)
|
|
```
|
|
|
|
[source](https://stackoverflow.com/a/5396728/535590)
|