Avatar billede steenb Nybegynder
23. januar 2009 - 12:28 Der er 6 kommentarer og
1 løsning

gennemsnitsberegning af alder på en persongruppe

Hej Experter

Jeg har i en medlemsdatabase-tabel en kolonne for medlemmernes fødselsdag.

Formatet er:
Fødselsdato    Dato og klokkeslæt    00-00-0000;0;_


Der er ca 350 records, men enkelte er blanke, (hvor fødselsdagen ikke er kendt.)

Jeg har brug for at kende medlemmernes gennemsnitsalder uden at medtage de tomme records,

Jeg har tidligere lavet beregningen i Exel hvor jeg manuelt har sorteret tomme celler fra (=ÅR(NU())- MIDDEL(E2:Exxx)) hvor middelværdien kun indeholdt fødselsåret =ÅR(fødselsdato)

Jeg ville gerne lave en forespørgsel som kunne indgå i mit statistikformular, og helst pr. dato (ikke kun på året), men jeg er lidt tom for ideer.
Mon der er nogen der kunne supporterer mig med et tip om hvordan det nemmest gøres.

Jeg bruger Access 2003, og er ikke særlig rutineret til det.

mvh
steenb
Avatar billede jesperfjoelner Nybegynder
23. januar 2009 - 17:41 #1
Dette skulle give gennemsnit af aldrene:

SELECT Avg(DateDiff("yyyy",[fødselsdato],Date())) AS alder
FROM Tabel1;
Avatar billede jesperfjoelner Nybegynder
23. januar 2009 - 17:42 #2
eller for alle personer både i år og dage

SELECT Avg(DateDiff("yyyy",[fødselsdato],Date())) AS alderIaar, DateDiff("d",[fødselsdato],Date()) AS alderIdage
FROM Tabel1
GROUP BY DateDiff("d",[fødselsdato],Date());
Avatar billede steenb Nybegynder
24. januar 2009 - 22:39 #3
Hej jesperfjoelner
Tak for svar. Det ser ud til at dit første forslag fungerer efter hensigten. Jeg kan ikke lige gennemskue hvordan tomme celler udelukkes fra beregningen, men det ser ud til at også det fungerer.

Dit forslag 2 giver mig 2 kolonner "alderIaar" og alderIdage, men ingen gennemsnit, og det var det jeg skulle bruge. Jeg leger lidt videre med begge forslag.
Tak for hjælpen, du får pointene.
mvh
Steenb
Avatar billede jesperfjoelner Nybegynder
24. januar 2009 - 22:57 #4
Hej Steen, tak for det, held og lykke med det.

Jeg tror at AVG-funktionen i sig selv sørger for at blanke felter ikke medtages i gennemsnitberegningen.

Ellers ville man evt kunne sikre sig ved kun at beregne på poster hvor fødselsdato ikke er null.

SELECT Avg(DateDiff("yyyy",[fødselsdato],Date())) AS alder
FROM Tabel1
WHERE fødselsdato Is Not Null

men det giver samme resultat.
Avatar billede steenb Nybegynder
25. januar 2009 - 17:12 #5
Tak for det. Jeg tror du har ret i at det må være AVG der har styr på tomme celler, jeg har prøvet dit sidste forslag, og ser ingen forskel. Nu hvor jeg har fået det implementeret kan jeg se at det vist er et problem at det kommer ud med 13 decimaler, det gode ville være at det var antal år med 2 decimaler, (eller år + x måneder).
måske finder jeg løsningen på det.
mvh
steenb
Avatar billede jesperfjoelner Nybegynder
25. januar 2009 - 18:15 #6
Hvis du bare skal have to decimaler kan du vist bruge

SELECT FormatNumber(Avg(DateDiff("yyyy",[fødselsdato],Date())),2) AS alder
FROM Tabel1;
Avatar billede steenb Nybegynder
26. januar 2009 - 00:08 #7
Mange tak for det, det var også næsten hvad jeg fandt frem til, og jeg er tilfreds med resultatet.
mange tak for hjælpen.
steenb
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester



IT-JOB

Netcompany A/S

Test Specialist

Cognizant Technology Solutions Denmark ApS

Test Manager