0%

Viele Zeilen zusammenfassen · Übung

Die Leihtage addieren

Die Anzahl sagt, dass sechs Gegenstände beigetragen haben. Sie sagt aber nicht, wie viel Leihzeit diese Zeilen zusammen darstellen. Addierst du die Werte von loan_days aus dem sichtbaren Katalog, erhältst du insgesamt 54.0, einschließlich der halben Tage für zwei Elektronikgegenstände.

Öffne summary.sql. Füge hinter der bestehenden Anzahl ein Komma ein und setze diesen zweiten Ergebnisausdruck vor FROM items:

SUM(loan_days) AS total_loan_days

Die vollständige Abfrage sollte so aussehen:

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

Klicke auf Run und suche nach einer Zeile mit zwei Werten:

Columns: item_count | total_loan_days
6 | 54.0

SUM(loan_days) fordert SQLite auf, die Werte dieser Spalte über dieselben sechs Quellzeilen hinweg zu addieren. Die Anzahl beantwortet „Wie viele?“, während die Summe „Wie viel insgesamt?“ beantwortet. Beide stehen in einer Ergebniszeile, weil sie die gesamte Menge zusammenfassen.

Du kannst die sichtbare Summe prüfen, ohne dir eine Formel zu merken: 7 + 3 + 7 + 14 + 2.5 + 20.5 ergibt 54.0. SQLite führt diese Addition für die tatsächlich vorhandenen Zeilen aus. Deshalb funktioniert die Abfrage weiterhin, wenn der Katalog wächst oder die Leihdauern sich ändern.

Der Katalog enthält 2.5 und 20.5, obwohl loan_days mit INTEGER-Affinität deklariert wurde. Als du diese Spalte erstellt hast, hast du gesehen, dass SQLite einen tatsächlichen numerischen Wert entsprechend dem empfangenen Wert speichert. Diese Summe muss die Beiträge mit Nachkommastellen erhalten. Das Ergebnis in eine ganze Zahl umzuwandeln würde die Daten verändern, statt sie zusammenzufassen.

Behalte COUNT(*) AS item_count als erste Ergebnisspalte bei. Du erweiterst eine nützliche Zusammenfassung, statt die vorherige Frage jedes Mal zu ersetzen. Das Komma sagt SQLite, dass die SELECT-Liste einen zweiten Ausdruck enthält.

Submit verwendet andere positive Leihdauern mit und ohne Nachkommastellen. Es vergleicht die numerische Summe, keinen formatierten Ausdruck wie 54 days. Lass SQLite die Zahl direkt unter der Überschrift total_loan_days zurückgeben.

Wenn Run einen Syntaxfehler nahe SUM meldet, prüfe das Komma zwischen den beiden Ausdrücken. Wenn die Summe der Anzahl der Gegenstände entspricht, stelle sicher, dass SUM den Wert loan_days statt 1 oder einer ID erhält.

Deine einzelne Zusammenfassungszeile enthält jetzt zwei unterschiedliche Informationen über denselben Katalog: die Anzahl der beitragenden Gegenstände und die Summe ihrer Leihdauern.

Aufgabe

Füge SUM(loan_days) AS total_loan_days als zweite Ergebnisspalte in summary.sql hinzu. Behalte COUNT(*) AS item_count an erster Stelle bei.

Führe die Abfrage aus, prüfe, ob Tage mit Nachkommastellen zur Summe beitragen, und reiche sie ein.