Re: Altersgruppe/-klasse (cluster) abfragen
Re: Altersgruppe/-klasse (cluster) abfragen
am 20.12.2006 16:04:59 von Andreas Stieger
Hi,
Johannes Vogel schrieb:
> floor((year(now())-year(geburtstag))/10)*10 =:
Ohne now() - geburtstag kannst du aber ein Jahr daneben liegen.
und das /10 * 10 geht auch mit TRUNCATE(...,-1)
Gruß,
Andreas
Altersgruppe/-klasse (cluster) abfragen
am 20.12.2006 16:33:50 von Christian Schmidt
Hallo,
ich habe eine Tabelle mit Geburtstagen und ich möchte die Anzahl der
Personen in verschiedenen Altersklassen wissen. Gibt es da eine einfache
Abfragemöglichkeit in MySQL?
Das Ergebnis soll in etwas so aussehen:
Klasse | Anzahl
================
20-30 | 24
40-50 | 17
50-60 | 3
GruÃ
Christian
Re: Altersgruppe/-klasse (cluster) abfragen
am 20.12.2006 16:49:11 von Johannes Vogel
Hi Christian
Christian Schmidt wrote:
> ich habe eine Tabelle mit Geburtstagen und ich möchte die Anzahl der
> Personen in verschiedenen Altersklassen wissen. Gibt es da eine einfache
> Abfragemöglichkeit in MySQL?
> Das Ergebnis soll in etwas so aussehen:
> Klasse | Anzahl
> ================
> 20-30 | 24
> 40-50 | 17
> 50-60 | 3
Niemand zwischen 30 und 40 Jahre alt?
floor((year(now())-year(geburtstag))/10)*10 =:
select concat(,'-',+10) as Klasse, count(*) as Anzahl
from Tabelle group by Klasse;
HTH, Johannes
Re: Altersgruppe/-klasse (cluster) abfragen
am 20.12.2006 17:25:08 von Andreas Stieger
Hallo,
Christian Schmidt schrieb:
> Tabelle mit Geburtstagen
...
> Anzahl der Personen in verschiedenen Altersklassen wissen.
SELECT
TRUNCATE(
EXTRACT(YEAR FROM CURDATE()) -
EXTRACT(YEAR FROM geb)
-
(
SIGN(
DATE_ADD(geb,
INTERVAL
(
EXTRACT(YEAR FROM CURDATE()) -
EXTRACT(YEAR FROM geb)
)
YEAR
)
- CURDATE()
- 1
)
+ 1
) / 2,
-1)
AS agegroup,
count(*)
FROM geb
GROUP BY agegroup;
Gruß,
Andreas
Re: Altersgruppe/-klasse (cluster) abfragen
am 20.12.2006 20:16:43 von Andreas Stieger
Andreas Stieger wrote:
> Hallo,
>
> Christian Schmidt schrieb:
>> Tabelle mit Geburtstagen
> ..
>> Anzahl der Personen in verschiedenen Altersklassen wissen.
>
natürlich muss da 2x SIGN() rein...
select
TRUNCATE(
EXTRACT(YEAR FROM CURDATE()) -
EXTRACT(YEAR FROM geb)
-
SIGN(
SIGN(
DATE_ADD(geb,
INTERVAL
(
EXTRACT(YEAR FROM CURDATE()) -
EXTRACT(YEAR FROM geb)
)
YEAR
)
- CURDATE()
- 1
)
+ 1
),
- 1
) AS agegroup,
count(*) AS count
FROM geb
GROUP BY agegroup;
Das pretty-printing bleibt als Hausaufgabe :-)
Gruß,
Andreas