Select query met group by en having

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Opdracht: DevOps Expert/Ontwikkelaar @ Assen

2021-03-23 iSense Opdracht: DevOps Expert/Ontwikkelaar Ben jij een ervaren DevOps expert / applicatiebeheerder-ontwikkelaar? Heb jij ervaring met het analyseren van productieproblemen en het oplossen hiervan? Lees dan snel verder! ISBI49414 Organisatie De organisatie is een van de grotere ICT-dienstverleners binnen de Rijksoverheid. Zij ondersteunen de primaire processen van diverse uitvoeringsorganisaties en de ministeries. Taken Als DevOps expert / applicatiebeheerder-ontwikkelaar ben jij verantwoordelijk voor een set van applicaties. Met jouw kennis en vaardigheden ben je tot het volgende in staat: Je analyseert productieproblemen en lost ze op, al dan niet in samenwerking met andere afdelingen. Je bouwt kleine, maar ook grote

Bekijk vacature »

Opdracht: DevOps Ontwikkelaar @ Assen

2021-03-23 iSense Opdracht: DevOps Ontwikkelaar Als DevOps ontwikkelaar ben jij verantwoordelijk voor het ontwikkelen en onderhouden van het portaal en daaraan gerelateerde applicaties. ISBI49429 Organisatie De organisatie is een van de grotere ICT-dienstverleners binnen de Rijksoverheid. Zij ondersteunen de primaire processen van diverse uitvoeringsorganisaties en de ministeries. Taken Je bouwt in teamverband aan functionele wijzigingen op de applicatie die uit de digitale strategie voortvloeien. Je analyseert productie-incidenten en lost ze op, in samenwerking met andere afdelingen. Je houdt je bezig met applicatie monitoring en de doorontwikkeling daarvan. Je draagt bij aan een effectieve ontwikkelomgeving door mee te werken aan een

Bekijk vacature »

Van Sebas

Van Sebas

08/05/2021 16:26:57
Quote Anchor link
Hallo experts,

Ik ben met een select query bezig om gegevens uit mijn database te halen alleen ik krijg maar niet de juiste informatie eruit. Ik heb een database met een date veld erin en ik heb een kolom cijfers en daarin staat dan 0, 1, 2 maar het er kan ook 100000 staan enz. (zie onderstaande afbeelding van een voorbeeld van de gegevens uit mijn database).

https://i.ibb.co/KyL1tmP/database.png

Nu wil ik twee queries maken een die alle gegevens eruit haalt van alle jaren waarvan de cijfers bestaat uit 1 of 2 getallen, die krijg ik werkend (al weet ik niet 100% zeker of het goed is). En ik wil een query die alle gegevens eruit haal van een specifiek jaar waarvan de cijfers bestaat uit 1 of 2 getallen, en die krijg ik niet werken.

Query die alle gegevens eruit haal van elk jaar (deze laat de juiste aantallen zien)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT cijfers,
       CHAR_LENGTH(cijfers) As cijferscount,
       count(*) as aantal
FROM tabelnaam
Group by cijfers
HAVING cijferscount = 1 OR cijferscount = 2


En uiteindelijk krijg ik dan de resultaten a la de toegevoegde afbeelding hierboven (b.v. 6x komt de 0 voor, 3x in 2008 en 3x in 2009)

En dit is de query die ik er dan van gemaakt heb om de resultaten van een specifiek jaar op te halen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT YEAR(datum) As jaar,
       cijfers,
       CHAR_LENGTH(cijfers) As cijferscount,
       count(*) as aantal
FROM tabelnaam
Group by cijfers
HAVING cijferscount = 1 OR cijferscount = 2 AND jaar = "2008"



Alleen wat er nu fout gaat is dat hij aangeeft van in 2008 komt het nummer 0, 6x voor terwijl dat maar 3x is in 2008 (en ook 3x in 2009, dus totaal is het wel 6 maar ik wil alleen de aantallen van 2008 weten).

Wat doe ik fout?
 
PHP hulp

PHP hulp

16/06/2021 00:28:28
 
Adoptive Solution

Adoptive Solution

08/05/2021 19:43:09
Quote Anchor link
Ik heb er dit van gemaakt :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT YEAR(datum) As jaar,
       cijfers,
       CHAR_LENGTH(cijfers) As cijferscount,
       count(*) as aantal
FROM getallen
GROUP BY jaar, cijfers
HAVING ( cijferscount = 1 OR cijferscount = 2 ) AND jaar = "2008";


Toevoeging op 08/05/2021 20:05:20:

PS. Een getal bestaat uit cijfers, niet andersom.
 
Van Sebas

Van Sebas

09/05/2021 10:10:52
Quote Anchor link
Top daarmee gaat het inderdaad wel goed!
Ik ga even in de group by duiken, bedankt voor de verbetering van de query.
 
Ivo P

Ivo P

11/05/2021 15:43:54
Quote Anchor link
volgens mij heb je WHERE nodig en niet HAVING:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
SELECT YEAR(datum) As jaar,
       cijfers,
--       CHAR_LENGTH(cijfers) As cijferscount,
       count(*) as aantal
FROM getallen
WHERE CHAR_LENGTH(cijfers) < 3
  AND jaar = "2008"
GROUP BY jaar, cijfers


Ik heb cijfercount ook even uitgecommenteerd: die moet anders namelijk ook in het stuk group-by staan, maar dan krijg je per cijfercount (1, 5, 32 etc) ook weer een count() bepaald.

Toevoeging op 11/05/2021 16:43:23:

aanvullend: having zou je nodig hebben als je bijvoorbeeld alleen die resultaten wilt hebben die "aantal" groter dan zeg 10 hebben:

GROUP BY jaar, cijfers
HAVING COUNT(*) > 10
Gewijzigd op 11/05/2021 15:44:33 door Ivo P
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.