0%

Vat veel rijen samen · oefening

Tel de uitleendagen bij elkaar op

Het aantal zegt dat zes voorwerpen hebben bijgedragen, maar niet hoeveel uitleentijd die rijen samen vertegenwoordigen. Tel de waarden van loan_days uit de zichtbare catalogus bij elkaar op en het totaal is 54.0, inclusief de halve dagen die voor twee elektronische voorwerpen zijn opgeslagen.

Open summary.sql. Voeg een komma toe na de bestaande telling en zet deze tweede resultaatexpressie vóór FROM items:

SUM(loan_days) AS total_loan_days

De volledige query hoort er zo uit te zien:

SELECT
    COUNT(*) AS item_count,
    SUM(loan_days) AS total_loan_days
FROM items;

Druk op Run en zoek één rij met twee waarden:

Columns: item_count | total_loan_days
6 | 54.0

SUM(loan_days) vraagt SQLite om de waarden van die kolom over dezelfde zes bronrijen bij elkaar op te tellen. De telling beantwoordt “hoeveel stuks?”, terwijl de som antwoord geeft op “hoeveel in totaal?” Ze staan in één resultaatrij omdat ze allebei de volledige verzameling samenvatten.

Je kunt het zichtbare totaal controleren zonder een formule uit je hoofd te leren: 7 + 3 + 7 + 14 + 2.5 + 20.5 is 54.0. SQLite voert die optelling uit voor de rijen die werkelijk aanwezig zijn. De query blijft dus werken wanneer de catalogus groeit of de termijnen veranderen.

De catalogus bevat 2.5 en 20.5, ook al is loan_days gedefinieerd met INTEGER-affiniteit. Bij het maken van die kolom zag je dat SQLite een concrete numerieke waarde opslaat op basis van de waarde die het ontvangt. Deze som moet die gebroken bijdragen behouden. Het resultaat naar een geheel getal omzetten zou de gegevens veranderen in plaats van samenvatten.

Behoud COUNT(*) AS item_count als eerste resultaatkolom. Je breidt één bruikbare samenvatting uit, in plaats van telkens de vorige vraag te vervangen. De komma vertelt SQLite dat de lijst na SELECT een tweede expressie bevat.

Submit gebruikt andere positieve termijnen met gehele getallen en kommagetallen. Het vergelijkt het numerieke totaal, geen opgemaakte tekst zoals 54 days. Laat SQLite het getal rechtstreeks onder de kop total_loan_days teruggeven.

Als Run een syntaxisfout bij SUM meldt, controleer dan of er een komma tussen de twee expressies staat. Als het totaal gelijk is aan het aantal voorwerpen, controleer dan of SUM de kolom loan_days krijgt in plaats van 1 of een ID.

Je enkele samenvattingsrij bevat nu twee verschillende gegevens over dezelfde catalogus: het aantal bijdragende voorwerpen en het totaal van hun uitleentermijnen.

Opdracht

Voeg SUM(loan_days) AS total_loan_days toe als tweede resultaatkolom in summary.sql. Behoud COUNT(*) AS item_count als eerste.

Voer de query uit, controleer of delen van dagen bijdragen aan het totaal en stuur hem in.