30. juni 2006 - 09:24Der er
5 kommentarer og 1 løsning
Antal personer i en aldersgruppe
Hej!
Jeg har en tabel med et felt med en dato, personens fødselsdato. Mit problem ligger i at jeg skal finde antal personer (dvs. antal poster) som ligger i en bestemt aldersgruppe, eksempelvis 20-25 år.
På nuværende tidspunkt har jeg følgende SQL sætning, som henter antallet af personer med hver alder, altså eksempelvis 22 personer på 30 år: SELECT YEAR(CURRENT_DATE()) - YEAR(birthdate) - (RIGHT(CURRENT_DATE(),5)<RIGHT(birthdate,5)) AS age, COUNT(id) as antal FROM brugere WHERE dato_end > CURRENT_DATE() AND dato_start < CURRENT_DATE() AND LENGTH(birthdate) > 2 GROUP by age
Ovenstående SQL sætning skal så omskrives til at vise antal personer i eksempelvis 20-25 års alderen... Statistikken kan sagtens udtrækkes med flere queries, altså eksempelvis et query for hver aldersgruppe.
Jeg håber jeg har formuleret mit problem klart nok ;)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
INSERT INTO person VALUES('Anders', 'Andersen', 19810702); INSERT INTO person VALUES('Børge', 'Børgesen', 19810629); INSERT INTO person VALUES('Christian', 'Christiansen', 19790702);
SELECT * FROM person;
SELECT YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person;
SELECT 5*FLOOR(age/5),5*FLOOR(age/5)+4,COUNT(*) FROM (SELECT YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person) x GROUP BY 5*FLOOR(age/5);
mysql> mysql> INSERT INTO person VALUES('Anders', 'Andersen', 19810702); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO person VALUES('Borge', 'Borgesen', 19810629); Query OK, 1 row affected (0.00 sec)
mysql> INSERT INTO person VALUES('Christian', 'Christiansen', 19790702); Query OK, 1 row affected (0.00 sec)
mysql> mysql> SELECT * FROM person; +-----------+--------------+---------------------+ | firstname | lastname | birthday | +-----------+--------------+---------------------+ | Anders | Andersen | 1981-07-02 00:00:00 | | Borge | Borgesen | 1981-06-29 00:00:00 | | Christian | Christiansen | 1979-07-02 00:00:00 | +-----------+--------------+---------------------+ 3 rows in set (0.00 sec)
mysql> mysql> SELECT YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person; +------+ | age | +------+ | 24 | | 25 | | 26 | +------+ 3 rows in set (0.00 sec)
mysql> mysql> SELECT 5*FLOOR(age/5),5*FLOOR(age/5)+4,COUNT(*) -> FROM (SELECT YEAR(NOW())-YEAR(birthday)-IF(DAYOFYEAR(NOW())<DAYOFYEAR(birthday),1,0) AS age FROM person) x -> GROUP BY 5*FLOOR(age/5); +----------------+------------------+----------+ | 5*FLOOR(age/5) | 5*FLOOR(age/5)+4 | COUNT(*) | +----------------+------------------+----------+ | 20 | 24 | 1 | | 25 | 29 | 2 | +----------------+------------------+----------+ 2 rows in set (0.00 sec)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.