Ich bin in der Lage, eine Abfrage zu machen, um die Anzahl der Kunden, die in einem Geschäft kommen, von 18 bis 24 pro Monat und pro Shop zu erhalten. Ich mache es so:Wie man Vorkommen in mehreren Datumsbereichen in PostgreSQL zählt
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;
Jetzt bin ich ein Problem mit zugleich machen diese Abfrage für mehrere Bereiche.
Im Moment habe ich dieses Datenbankschema:
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 |
Und ich würde so etwas wie dies lernen:
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
In der ersten Abfrage, ist es nicht der Fall zu verwalten, wo ein Geschäft hat KEINE Kunden. Wie bekomme ich 0 wenn nicht?
Wie die verschiedenen Datumsbereiche gleichzeitig abfragen?
Verwenden Sie in der Auswahlliste die entsprechenden Ausdrücke, einen für jede Altersgruppe. Z.B. ', count (fall wenn ... dann 1 ende) als 18_age_25, count (fall wenn ...'. – jarlh
alter ab heute? –