Vat veel rijen samen · oefening
Bereken een gemiddelde uitleentermijn
De kortste en langste termijnen tonen de grenzen van de catalogus, maar geen van beide beschrijft het midden. Als alle zes de uitleentermijnen gelijk zouden worden verdeeld, zou elk voorwerp negen dagen hebben. Een gemiddelde geeft dat evenwichtspunt.
Open summary.sql. Voeg een komma toe na de MAX-expressie en voeg daarna deze vijfde resultaatkolom toe vóór FROM items:
AVG(loan_days) AS average_loan_days
Druk op Run. Het rapport met één rij krijgt er één waarde bij:
Columns: item_count | total_loan_days | shortest_loan_days | longest_loan_days | average_loan_days
6 | 54.0 | 2.5 | 20.5 | 9.0
AVG(loan_days) vraagt SQLite om het numerieke gemiddelde van de bijdragende waarden te berekenen. Voor deze catalogus is het totaal 54.0 en het aantal 6, dus is het resultaat 9.0.
Je kunt je de berekening voorstellen als het gelijk verdelen van het totaal over de getelde rijen. Als drie onbekende termijnen 2.5, 4.25 en 8 zijn, is hun totaal 14.75; delen door drie geeft een gemiddelde met een gebroken deel. SQLite gebruikt de rijen in de query, niet een waarde die in het rapport is getypt.
De .0 maakt het resultaat niet tot tekst. Het is het numerieke antwoord van SQLite, getoond via Python zonder afronding of versiering. Een andere catalogus kan een waarde zoals 6.25 opleveren, en dat gebroken deel heeft betekenis. Zet het gemiddelde niet om naar een geheel getal en verwerk het niet in een tekst.
Laat alle vier de eerdere expressies staan. Door aantal, totaal, uitersten en gemiddelde samen te bekijken, kun je het resultaat controleren. Een gemiddelde hoort tussen het minimum en maximum te liggen, en totaal gedeeld door aantal biedt nog een nuttige controle uit het hoofd.
Die controles helpen zonder extra code te worden. Bereken het gemiddelde niet in Python nadat je de andere kolommen hebt gelezen. Door AVG(loan_days) in SQL te houden, geeft de database één samenhangende samenvatting van één bronverzameling terug.
Submit gebruikt één catalogus waarvan het gemiddelde er als een geheel getal uitziet en een andere waarvan het gemiddelde een gebroken deel heeft. Het vergelijkt numerieke waarden met een kleine tolerantie, omdat sommige decimale breuken niet exact in een computer kunnen worden weergegeven. Je hoeft ze niet af te ronden; geef het resultaat van SQLite rechtstreeks terug.
Als Run het totaal onder de nieuwe kop herhaalt, controleer dan of de functienaam AVG is, niet SUM. Als het gemiddelde van ID’s wordt genomen, controleer dan de kolom tussen de haakjes. De berekening hoort bij loan_days.
Je hebt nu vijf manieren om naar dezelfde verzameling bronrijen te kijken. De telling meet de omvang, de som het totaal, minimum en maximum de grenzen en het gemiddelde het evenwichtspunt.
Opdracht
Voeg AVG(loan_days) AS average_loan_days toe als vijfde resultaatkolom in summary.sql. Laat de vier bestaande samenvattingswaarden ongewijzigd.
Voer de query uit en stuur het numerieke gemiddelde van SQLite in zonder het op te maken of af te ronden.