0%

Vat veel rijen samen · oefening

Maak één samenvatting per categorie

Eén gemiddelde voor de hele catalogus mengt elektronica, materiaal voor evenementen en gereedschap. De uitleenbalie leert meer van drie kleinere samenvattingen, één per categorie, zodat ze groepen voor verschillende behoeften kan vergelijken.

Open summary.sql. Voeg category toe als eerste geselecteerde kolom en zet daarna deze twee clausules na FROM items:

GROUP BY category
ORDER BY category ASC;

Behoud alle vijf de aggregatie-expressies. De volledige vorm is eerst category, gevolgd door aantal, totaal, minimum, maximum en gemiddelde.

Druk op Run. SQLite geeft één rij per categorie terug:

Columns: category | item_count | total_loan_days | shortest_loan_days | longest_loan_days | average_loan_days
electronics | 2 | 23.0 | 2.5 | 20.5 | 11.5
events | 2 | 21 | 7 | 14 | 10.5
tools | 2 | 10 | 3 | 7 | 5.0

GROUP BY category verzamelt bronrijen met dezelfde categoriewaarde. Elke aggregatie werkt vervolgens binnen één groep in plaats van over de hele tabel. Het aantal voor elektronica is 2, omdat twee rijen aan die groep bijdragen. Het totaal 23.0 komt alleen van hun twee termijnen.

Volg de rijen voor evenementen als concrete groep. De klaptafel draagt 7 dagen bij en het projectiescherm 14. Hun groep heeft een aantal van 2, een totaal van 21, de uitersten 7 en 14 en een gemiddelde van 10.5. Waarden van gereedschap en elektronica komen nooit in die berekeningen terecht.

De geselecteerde waarde category heet de groepeersleutel. Die vertelt de lezer welke groep elke samenvattingsrij beschrijft. Zonder die sleutel zouden er drie rijen getallen aankomen zonder aanduiding die ze aan elektronica, evenementen of gereedschap koppelt.

Elk bronvoorwerp heeft één categoriewaarde, dus elke rij draagt hier aan één groep bij. Een nieuwe categorie zou automatisch een nieuwe resultaatrij opleveren; je schrijft niet één query per categorie en somt de bekende categorienamen niet van tevoren op.

ORDER BY category ASC maakt de groepsrijen voorspelbaar. Groeperen bepaalt welke rijen bij elkaar horen; het belooft niet in welke volgorde de groepen verschijnen. De laatste clausule vraagt om hun categorienamen in oplopende volgorde.

Submit varieert categorienamen, groepsgroottes, invoegvolgorde en positieve termijnen met een gebroken deel. Zorg dat elke aggregatie in de query blijft staan en binnen de eigen categorie wordt berekend. Een afzonderlijke naam van een voorwerp selecteren zou hier niet logisch zijn, omdat een groep meerdere verschillende namen kan bevatten.

Als elke rij nog steeds één voorwerp beschrijft, controleer dan of GROUP BY category aanwezig is. Als je één samenvatting voor de hele tabel krijgt, zorg dan dat category zowel geselecteerd is als wordt gebruikt als groepeersleutel.

Het rapport is opnieuw van vorm veranderd. Het zegt niet meer alleen: “Hier is de samenvatting van de catalogus.” Het zegt: “Hier is één volledige samenvatting voor elk soort voorwerp.”

Opdracht

Maak van summary.sql één samenvatting per categorie. Selecteer category eerst, behoud alle vijf de aggregaties, voeg GROUP BY category toe en orden de groepen op category ASC.

Voer de query uit en stuur de geordende categoriesamenvattingen in.