Aantallen tellen in SQL

Status
Niet open voor verdere reacties.

Luukie

Gebruiker
Lid geworden
14 sep 2008
Berichten
105
Hallo allemaal,

Ik heb een tabel waarin reserveringen van klanten staan. (van 2010 in dit geval)
De reserveringsID is uniek en tevens PK. De klant is identificeerbaar aan Klantnummer.

Nu zijn er klanten die in 2010 2 of 3 keer op vakantie zijn geweest.
Ik wil graag zien hoeveel klanten 1 reserveringen hebben, hoeveel 2 reserveringen en hoeveel 3 reserveringen.

Is dit mogelijk met SQL en zo ja, hoe bouw ik de query op? kan iemand me helpen?

Alvast bedankt,

Luuk
 
Dat kan zeker, je moet dan gebruik maken van COUNT om rijen te tellen en van GROUP BY om aan te geven dat je rijen wil tellen in sets die aan een bepaalde voorwaarde moeten voldoen:

[sql]
SELECT COUNT(veldnaam)
FROM tabel
GROUP BY ander_veld
[/sql]

Dit zou tellen hoeveel rijen er zijn voor elke verschillende waarde van 'ander_veld'
 
Hoi Frats,

Allereerst bedankt voor je snelle reactie maar volgens mij is dit niet exact wat ik bedoel of ik begrijp het gewoon niet.

Ik heb 2 kolommen: één is ReserveringsID en twee is KlantID.
ReserveringsID is uniek en PK. KlantID kan vaker voorkomen omdat een klant meerdere reserveringen kan hebben.

Nu wil ik weten hoeveel klanten er in mijn tabel staan die exact 1 reservering hebben, exact 2 reserveringen hebben enzovoort.

Het resultaat moet er dus zo uitzien:
1 (reservering) : 10 (klanten)
2 (reserveringen : 8 (klanten)
3 (reserveringen : 3 (klanten)

Begrijp ik je reactie niet of is het gewoon niet de oplossing?

gr. Luuk
 
Ohzo. Ik dacht dat je wat anders bedoelde! Eens zien of ik hier ook iets voor weet :confused:
 
Je kun het scriptje van Frats als basis gebruiken, het resultaat daarvan is per klant het aantal reserveringen. Als je met dit resultaat bij het aantal reserveringen het aantal klanten telt krijg je misschien wel wat je wilt. Je krijgt dan zoiets:[sql]SELECT t.reserveringen
, COUNT( t.KlantID ) klanten
FROM( SELECT KlantID
, COUNT(*) reserveringen
FROM tabel
GROUP BY KlantID
) t
GROUP BY t.reserveringen
ORDER BY t.reserveringen[/sql]
 
Hoi Epic, bedankt voor je reactie.

[SQL]SELECT t.hr_reserid
, COUNT( t.hr_addrid ) AS klanten
FROM( SELECT hr_addrid
, COUNT(*) reserveringen
FROM tabel
GROUP BY hr_addrid
)
GROUP BY t.hr_reserid
ORDER BY t.hr_reserid[/SQL]

Als ik je code gebruik en daar mijn kolomnamen invoeg. (hr_addrid = klantid en hr_reserid = reserveringsID)
Dan krijg ik foutmeldingen in Access dat de database engine van Access het object COUNT(*)reserveringen niet kan vinden.

Hoe los ik dit op?

Bedankt!
 
Je kunt proberen om een veldnaam in te vullen daar, zou kunnen dat COUNT(*) niet ondersteunt wordt (want eigenlijk slaat het ook nergens op)
 
Ongeacht het veld dat ik daar invul krijg ik de foutmelding die ik als bijlage bijgevoegd heb.

Hopelijk heeft iemand een laatste idee :)

Groeten Luuk

Untitled.jpg
 
Zoiets dan:[sql]SELECT t.hr_reserid
, COUNT( t.hr_addrid ) AS klanten
FROM( SELECT hr_addrid
, COUNT( hr_reserid ) AS hr_reserid
FROM tabel
GROUP BY hr_addrid
) t
GROUP BY t.hr_reserid
ORDER BY t.hr_reserid[/sql]
Vergeet niet de 'tabel' aan te passen naar de naam van je eigen tabel ;).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan