Ich habe eine Zuordnung in Datenbank-Management-Systeme, in denen ich Abfragen für bestimmte Probleme schreiben muss. Ich habe 4 Probleme, von denen ich 3 gelöst und mit dem letzten festgefahren bin.SQLite - Rückgabe 0 wenn null
Details:
- Mit Version 1.4 der Chinook-Datenbank (https://chinookdatabase.codeplex.com/).
- SQLite DB Browser
- Chinook Sqlite AutoIncrementPKs.sqlite Datei im Verzeichnis mit Chinook-Dateien ist die Datenbank arbeite ich auf
Problem Statement: eine Abfrage um eine Rangliste von Mitarbeitern basierend auf dem Geldbetrag zu erstellen, der über Kundenrechnungen eingeführt wurde, für die sie der Support-Vertreter war. Die Ergebnismenge (siehe Abbildung unten) sollte folgende Felder (in der angegebenen Reihenfolge) für alle Mitarbeiter enthalten (auch solche, die keine Kunden unterstützt haben): ID (e_id), Vorname (e_vorname), Nachname (e_last_name), Titel (e_title) und Rechnungssumme (total_invoices). Die Zeilen sollten nach Rechnungssumme (zuerst), dann nach Nachname (alphabetisch) und dann nach Vornamen (alphabetisch) sortiert werden. Der Rechnungssumme sollte ein Dollarzeichen ($) vorangestellt werden und zwei Nachkommastellen haben (gegebenenfalls gerundet); Im Fall von Mitarbeitern ohne Rechnungen sollten Sie einen Wert von 0.00 ausgeben, nicht NULL. Es kann nützlich sein, die Funktionen IFNULL, ROUND und PRINTF von SQLite zu betrachten.
gewünschte Ausgabe:
Meine Suche:
Select Employee.EmployeeId as e_id,
Employee.FirstName as e_first_name,
Employee.LastName as e_last_name,
Employee.Title as e_title,
'$' || printf("%.2f", Sum(Invoice.Total)) as total_invoices
From Invoice Inner Join Customer On Customer.CustomerId = Invoice.CustomerId
Inner Join Employee On Employee.EmployeeId = Customer.SupportRepId
Group by Employee.EmployeeId
Having Invoice.CustomerId in
(Select Customer.CustomerId From Customer
Where Customer.SupportRepId in
(Select Employee.EmployeeId From Employee Inner Join Customer On Employee.EmployeeId = Customer.SupportRepId)
)
order by sum(Invoice.Total) desc
Meine Leistung:
Wie Sie sehen können, sind die ersten drei Zeilen korrekt, aber die späteren Zeilen werden nicht gedruckt, da die Mitarbeiter keine Rechnungen haben und daher EmployeeID null ist.
Wie drucke ich die Zeilen in diesem Zustand? Ich versuchte mit Coalesce und ifnull Funktionen, aber ich kann sie nicht zur Arbeit bekommen.
Ich würde wirklich schätzen, wenn jemand meine Abfrage ändern kann, um passende Lösungen zu erhalten. Danke!
P. S: Das ist das Schema der Chinook-Datenbank
Vielen Dank. Es funktionierte :) – user3397557