Я могу сделать запрос, чтобы получить количество клиентов, которые приезжают в магазин с 18 до 24 лет в месяц и за магазин. Я делаю это так:Как считать случаи в нескольких диапазонах дат в PostgreSQL
select year, month, shop_id, count(birthday)
from customers
where birthday
BETWEEN '1992-01-01 00:00:00' AND '1998-01-01 00:00:00'
group by year, month, shop_id;
Теперь у меня вопрос что делает этот запрос для нескольких диапазонов одновременно.
У меня есть в настоящее время эту схему базы данных:
shop_id | birthday | year | month |
--------+----------+------+--------
567 | 1998-10-10 | 2014 | 10 |
567 | 1996-10-10 | 2014 | 10 |
567 | 1985-10-10 | 2014 | 10 |
234 | 1990-10-10 | 2014 | 10 |
123 | 1970-01-10 | 2014 | 10 |
123 | 1974-01-10 | 2014 | 11 |
И я хотел бы получить что-то вроде этого:
shop_id | year | month | 18 < age < 25 | 26 < age < 35
--------+------+-------+---------------+-------------
567 | 2014 | 10 | 2 | 1
234 | 2014 | 10 | 1 | 0
123 | 2014 | 10 | 0 | 0
В первом запросе, он не управляет случай, когда один магазин имеет НЕТ клиентов. Как получить 0, если нет?
Как запросить несколько диапазонов дат одновременно?
Имеют выражения в списке выбора, по одному для каждой возрастной группы. Например. ', count (case when ... then 1 end) как 18_age_25, count (case when ...'. – jarlh
возраст на сегодняшний день? –