Statische informatie - Statistieken over meerdere groepen

9 belangrijke vragen over Statische informatie - Statistieken over meerdere groepen

Hoe krijg je statistieken over meerdere groepen?

Met 'group by'

Geef – alleen voor de niveaus A en B – het aantal stukken per genre,
geordend van ‘veel’ naar ‘weinig’. Zie pag 184 Muziekdatabase.

Voorafgaand aan het groeperen wordt nu geselecteerd op ‘niveau A of
B’. Het resultaat van het groeperen is een gewone tabel, die door toevoe-
ging van een order by -clausule geordend kan worden op een of meer van
zijn kolommen. De order by komt dus ook nu als laatste:


select genre, count(*) aantal -- 4
from Stuk -- 1
where niveau in ('A','B') -- 2
group by genre -- 3
order by 2 desc; -- 5


Resultaat:
GENRE AANTAL
======== =========
klassiek 4
jazz 3
pop 1

Hoe kun je met 'group by' verfijnd groeperen, bijvoorbeeld op 2 niveau's?

Geef een overzicht van aantallen speelstukken per combinatie van genre
en niveau.

Oplossing:

select genre, niveau, count(*)
from Stuk
where niveau is not null -- alleen speelstukken
group by genre, niveau;

Resultaat:

GENRE NIVEAU COUNT
======== ====== =========
jazz A 1
jazz B 2
klassiek A 1
klassiek B 3
pop A 1

Door nog meer kolommen in de group by -clausule op te nemen, kan de
groepenindeling nog verder worden verfijnd.
  • Hogere cijfers + sneller leren
  • Niets twee keer studeren
  • 100% zeker alles onthouden
Ontdek Study Smart

Hoe orden ik op een juiste manier bij groeperen met meerder niveau's? Doe eens voor?

Ter illustratie een andere ordening: van moeilijk naar makkelijk en bij
gelijk niveau alfabetisch per genre. Het ligt voor de hand om dan ook in
de select -lijst en achter de group by genre en niveau om te keren:

select niveau, genre, count(*)
from Stuk
where niveau is not null
group by niveau, genre
order by niveau desc, genre;

Resultaat:

NIVEAU GENRE COUNT
====== ======== =========
B jazz 2
B klassiek 3
A jazz 1
A klassiek 1
A pop 1

We zien: verfijnd groeperen vraagt om verfijnd ordenen

Wat is de identificatie van de gegroepeerde tabel?

De kolom of kolom combinatie waarop wordt gegropeerd.

Wat moet er gebeuren om bij group by het queryresultaat goed te kunnen interpreteren?

Om het queryresultaat goed te
kunnen interpreteren en tevens identieke rijen uit te sluiten, moet deze
volledig in de select -clausule worden opgenomen.

De volgende query:

select genre, count(*) aantal -- ongewenst
from Stuk
where niveau <= 'B'
group by genre, niveau

met als resultaat:

GENRE AANTAL
======== =========
jazz 1
jazz 2
klassiek 1
klassiek 3
pop 1

is dus ongewenst, omdat de (genre, niveau)-combinaties waarop het
queryresultaat betrekking heeft, niet worden weergegeven.

De regel dat een select -clausule een volledige identificatie moet bevatten
van de gerepresenteerde entiteiten, is al eerder aan de orde geweest voor
niet-gegroepeerde query’s. Zorg dus dat de select -clausule altijd een
identificatie bevat.

Hoe kun je rijselectie toepassen op 'group by'. Welke rij selecteer je dan?

Dat doe je door 'having'. Je selecteert dan dus de rijen van de 'conceptuele tussentabel' zoals deze bij group by gebruikt word door he systeem, dus zie hieronder stap 3. Een rij is dus een entiteit waarop gegroepeerd wordt, welke dus een herhalende groep met de rest van de kolommen als waarden heeft.

Geef per genre het aantal stukken van niveau A of B, voor zover dat
aantal groter is dan 1.

select genre, count(*) -- 5
from Stuk -- 1
where niveau in ('A', 'B') -- 2
group by genre -- 3
having count(*) > 1; -- 4

Resultaat:

GENRE COUNT
======== =========
jazz 3
klassiek 4

Wat is best practice bij gebruik van where en having?

Het devies is: eerst zoveel mogelijk rijen wegselecteren (met where ), dan
pas groeperen ( group by ) en eventueel daarna nog groepen wegselecteren
(met having )

Wat moet je weten bij het groeperen bij een optionele kolom?

Bij groeperen op een optionele kolom moeten we weten hoe nulls zich
gedragen.

Nulls vormen samen 1 groep. Als je die niet wilt, dan moet je dus een where met is not null gebruiken.

De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:

  • Een unieke studie- en oefentool
  • Nooit meer iets twee keer studeren
  • Haal de cijfers waar je op hoopt
  • 100% zeker alles onthouden
Onthoud sneller, leer beter. Wetenschappelijk bewezen.
Trustpilot-logo