Avatar billede robertholmjensen Nybegynder
03. januar 2002 - 00:12 Der er 14 kommentarer og
2 løsninger

Yderligere opdeling af forespørgsel

Jeg har tidligere fået god hjælp til nedenstående spørgsmål, og har nu et tillægsspørgsmål:
Jeg har lavet en registreringsdatabase, hvor der indgår et datofelt. Jeg vil gerne lave en en forespørgsel, som både tæller antallet af en påpgældende registrering pr. år, samt antallet af en pågældende registrering pr. måned. Registreringen pr. år kan jeg sagtens finde ud af at lave, men når jeg prøver at kategorisere ud i måneder går det galt.  Der kommer en fejlmeddelelse frem, om at \"jeg har forsøgt at køre en forespørgsel, der ikke medtager det angivne udtryk \"Dato\" som en del af en aggregatfunktion. For januar måned har jeg skrevet et kriterium der hedder >=\"01-01-*\" Or <=\"31-01-*\", men alligevel vil det ikke lykkes. Er der nogen som kan hjælpe?   

Jeg fik svaret:
Prøv at lave en ny kolonne i forespørgslen, som hedder:
Måned: Year([Dato]) & \"-\" & Month([Dato])
Herefter kan du gruppere og summere på denne kolonne som du vil.
- Og ja, det virkede perfekt.

Nu er mit problem, at den registrering jeg gerne vil forespørge på samtidig, vedrører et felt, som omhandler personers alder. Indtastningen foregår ved specifik indtastning af alder (det skal det være), men jeg vil gerne forespørge antal registreringer fordelt på aldersgrupper af følgende størrelser:
>=14, 15-19, 20-24, 25-29, 30-34, 35-39, 40-44, 44-49, >50.
Jeg har prøvet at opstille forskellige udtryk, som jeg adskiller med \"or\", men det virker ikke.
Og ja, forespørgslen skal køre, sammen med månedsfordelingen, som ovenfor nævnt...

Er dette noget som kan lade sig gøre?
Avatar billede johs_j Novice
03. januar 2002 - 10:22 #1
Lytter med
Avatar billede larsen Nybegynder
03. januar 2002 - 11:34 #2
Hvad med :
SELECT * FROM DB WHERE Alder Between 18 And 30

Det skulle vælge dem der er mellem 18 og 30
Avatar billede robertholmjensen Nybegynder
03. januar 2002 - 22:44 #3
Det virker nu ikke rigtigt for mig. Problemet er også at jeg får listet alle dem, som der ligger inden for den givne aldersgruppe, med en linje til hver post. Jeg er interesseret i at vide hvor mange (dvs. en sammentælling), der ligger inden for hver aldersgruppe. Dvs. hvor mange ligger der i gruppen under 14 år, hvor mange ligger der mellem 15 og 19 år, osv. osv...
Avatar billede larsen Nybegynder
04. januar 2002 - 14:46 #4
Hvad med :
SELECT COUNT(*) AS Alder18_30 WHERE Alder BETWEEN 18 AND 30

Så kan du aflæse tallet i feltet Alder18_30
Avatar billede robertholmjensen Nybegynder
04. januar 2002 - 14:56 #5
Kan du også hjælpe mig med hvordan jeg sætter det ind... (SQL er ikke min stærke side...)

I forvejen har jeg et udtryk stående som hedder:
SELECT Count([Tabel Skema].RegNr) AS AntalOfRegNr
FROM [Tabel Skema];

Da jeg tæller antallet af registrede poster på årsbasis.... (jeg går ud fra at de skal medtages.

Endvidere har jeg også brug for at opdele yderligere i en anden forespørgsel, hvor jeg skal trække oplysninger ud månedsvis. Der har jeg et udtryk stående i forvejen som hedder:
jo også yderligere ved at at anvende udtrykket:

SELECT Count([Tabel Skema].RegNr) AS AntalOfRegNr, Year([Dato]) & \"-\" & Month([Dato]) AS Måned
FROM [Tabel Skema]
GROUP BY Year([Dato]) & \"-\" & Month([Dato]);

Avatar billede larsen Nybegynder
04. januar 2002 - 15:21 #6
Er det formuleringsmåden du mener ?
Feks.
SqlStr=\'SELECT COUNT(*) AS Alder15_19 FROM Skema WHERE Alder BETWEEN 15 AND 19\'
Avatar billede terry Ekspert
05. januar 2002 - 11:29 #7
Hi robertholm...
As far as I can see you have a problem here. You have grouped your query on Year and month but also need to group on age groups to be able to count those within each age group. It is possible to group on one or more fields, but this will return more records in the result.

For example after grouping by Year-Month you get two records as follows
1948-11
1948-12

These are both > 50 and you want to see how many are in the age group (>50) So you first need to calculate their age which gives an extra row in your query which you then need to group on also, and another row to count the number of records within the group. But this doesnt help because then you get the following

1948-11  53  1
1948-12  53  1 

If you JUST grouped by age then you could see how many there are within each age group, but not as you are doing it at the moment.
Another thing you want to think about the FULL date of birth. No good just using year+month to calculate an age.
Avatar billede terry Ekspert
05. januar 2002 - 11:31 #8
In the above example you wanted to see one record showing 53 2 but because you are already grouping on year+month you cant

Avatar billede robertholmjensen Nybegynder
05. januar 2002 - 14:33 #9
Ok I see. This means I have to add field in the post, with the multiple age groups? But then I have both register exact age and which age group it belongs to, when filling in. E.g fill age 25 in, and fill in that it belongs to age group 25-29...?
Avatar billede robertholmjensen Nybegynder
05. januar 2002 - 14:34 #10
Ja, det er formuleringsmåden jeg mente, hvordan jeg helt præcis skulle skrive det i SQL...
Avatar billede terry Ekspert
05. januar 2002 - 15:12 #11
Hi again (Robert?)

I think the first thing is to decide EXACTLY what you want.
Do you want to GROUP by Year and Month or do you want to see the number of people in the same age group?
Decide what you want and then you can send me your database and I will take a look for you.

Sandy@mail1.stofanet.dk




Avatar billede robertholmjensen Nybegynder
06. januar 2002 - 22:52 #12
Hi Terry,

Thanks for your help. Unfortunately I\'m not able to send the DB to you, since it is workrelated, and contains confident informations. But I have chosen to use one of your suggestions: To group people by age group.
Concerning the points, would it be correct if I give 50 to you and 50 to Larsen?
- Robert
Avatar billede terry Ekspert
07. januar 2002 - 08:19 #13
no problem with me :o)
Avatar billede robertholmjensen Nybegynder
08. januar 2002 - 13:55 #14
Ok I transfer promtly :-)
Avatar billede terry Ekspert
08. januar 2002 - 13:57 #15
mange tak :o)
Avatar billede larsen Nybegynder
08. januar 2002 - 15:35 #16
Takker
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