{"beispielaufgaben":[{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Die Stadtbücherei Lindenau betreibt mehrere Zweigstellen. Für eine Auswertung des Mahn- und Gebührenwesens sollen die erhobenen Ausleihgebühren je Zweigstelle zusammengefasst werden. Ihnen liegen folgende Tabellen vor.","typ":"absatz"},{"text":"Tabelle Filiale:\nF_ID | F_Name\n1 | Altstadt\n2 | Hafen\n3 | Nordpark","typ":"absatz"},{"text":"Tabelle Ausleihe:\nA_ID | A_FID | A_Gebuehr\n1 | 1 | 3\n2 | 1 | 5\n3 | 2 | 2","typ":"absatz"},{"text":"Jede Zeile der Tabelle Ausleihe steht für einen abgeschlossenen Ausleihvorgang; A_FID verweist auf die Filiale, A_Gebuehr enthält die berechnete Gebühr in Euro.","typ":"absatz"},{"text":"Erstellen Sie eine einzelne SQL-Abfrage, die für jede Filiale den Filialnamen, die Anzahl der Ausleihvorgänge sowie die Summe der Gebühren ausgibt. Es sollen ausdrücklich auch Filialen ohne jeden Ausleihvorgang erscheinen; für diese ist bei Anzahl und Summe der Wert 0 (nicht NULL) auszugeben. Sortieren Sie das Ergebnis aufsteigend nach dem Filialnamen. Verwenden Sie die Spaltenüberschriften F_Name, AnzahlAusleihen und SummeGebuehren.","typ":"absatz"}],"beispiel_id":"bsp-sql-join-erstellen-quellcode-01","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (8 Punkte):\nSELECT F.F_Name,\n       COUNT(A.A_ID) AS AnzahlAusleihen,\n       COALESCE(SUM(A.A_Gebuehr),0) AS SummeGebuehren\nFROM Filiale AS F\nLEFT JOIN Ausleihe AS A ON A.A_FID = F.F_ID\nGROUP BY F.F_Name\nORDER BY F.F_Name ASC;","typ":"code"},{"text":"Punkteverteilung: LEFT JOIN korrekt inkl. Filialen ohne Ausleihen 2 P; COUNT(A.A_ID) als AnzahlAusleihen 1 P; SUM(A.A_Gebuehr) als SummeGebuehren 1 P; COALESCE(...,0) zur geforderten 0-Ausgabe 2 P; GROUP BY F.F_Name 1 P; ORDER BY F.F_Name ASC 1 P.\nHinweis: Da der Aufgabentext für Filialen ohne Ausleihe ausdrücklich 0 statt NULL verlangt, ist COALESCE (oder ein gleichwertiges IFNULL) zwingend; ein blankes SUM ohne 0-Ersetzung ist hier nur unvollständig (kein Punkt für COALESCE). COUNT(*) statt COUNT(A.A_ID) ist falsch, da es für die leere Filiale 1 liefern würde.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":8,"punkterahmen":{"max":10,"min":5},"quellen":["ap2-fiae-2021-winter-ae2-a04-e","ap2-fiae-2022-sommer-ae2-a04-b-bc","ap2-fiae-2022-sommer-ae2-a04-b-bd","ap2-fiae-2022-winter-ae2-a04-a","ap2-fiae-2026-sommer-ae2-a04-b","ap2-fiae-2026-sommer-ae2-a04-c-ca","ap2-fidp-2022-sommer-fdp2-a02-c-cb","ap2-fidp-2023-sommer-fdp2-a03-b-bc","ap2-fidp-2025-winter-fdp2-a03-b"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Der Online-Buchhandel „Lesewelt“ speichert seine Verkaufsdaten in einer relationalen Datenbank. Für eine Umsatzauswertung stehen Ihnen die folgenden drei Tabellen zur Verfügung.","typ":"absatz"},{"text":"Kunde:\nK_ID | K_Name\n1 | Bauer\n2 | Roth\n3 | Lang","typ":"absatz"},{"text":"Bestellung:\nB_ID | B_KID | B_Datum\n10 | 1 | 2025-03-04\n11 | 1 | 2025-05-09\n12 | 2 | 2025-02-01\n13 | 3 | 2024-11-20","typ":"absatz"},{"text":"Position:\nP_ID | P_BID | P_Betrag\n100 | 10 | 40\n101 | 10 | 20\n102 | 11 | 30\n103 | 12 | 15\n104 | 13 | 90","typ":"absatz"},{"text":"B_KID verweist auf K_ID, P_BID verweist auf B_ID. Das Datum ist im Format JJJJ-MM-TT gespeichert. In P_Betrag steht der Positionsbetrag in Euro.","typ":"absatz"},{"text":"Erstellen Sie eine SQL-Abfrage, die je Kunde den Kundennamen und den Gesamtumsatz aus allen Bestellpositionen des Jahres 2025 ausgibt. Es sollen nur Kunden erscheinen, deren so ermittelter Gesamtumsatz größer als 50 Euro ist. Sortieren Sie das Ergebnis aufsteigend nach dem Kundennamen.","typ":"absatz"}],"beispiel_id":"bsp-sql-join-erstellen-quellcode-02","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (10 Punkte):\nSELECT K.K_Name, SUM(P.P_Betrag) AS Umsatz\nFROM Kunde K\nJOIN Bestellung B ON B.B_KID = K.K_ID\nJOIN Position P ON P.P_BID = B.B_ID\nWHERE B.B_Datum LIKE '2025%'\nGROUP BY K.K_ID, K.K_Name\nHAVING SUM(P.P_Betrag) > 50\nORDER BY K.K_Name;","typ":"code"},{"text":"Ergebnis: Bauer 90 (60 aus Bestellung 10, 30 aus Bestellung 11). Roth erreicht nur 15 Euro und Lang nur eine Bestellung aus 2024; beide entfallen.","typ":"absatz"},{"text":"Punkteverteilung: SELECT mit Name und Summe 2 P; beide JOINs mit korrekten Bedingungen 3 P; Jahresfilter 2025 im WHERE 2 P; GROUP BY nach Kunde 1 P; HAVING > 50 1 P; ORDER BY aufsteigend 1 P.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":10,"punkterahmen":{"max":10,"min":5},"quellen":["ap2-fiae-2021-winter-ae2-a04-e","ap2-fiae-2022-sommer-ae2-a04-b-bc","ap2-fiae-2022-sommer-ae2-a04-b-bd","ap2-fiae-2022-winter-ae2-a04-a","ap2-fiae-2026-sommer-ae2-a04-b","ap2-fiae-2026-sommer-ae2-a04-c-ca","ap2-fidp-2022-sommer-fdp2-a02-c-cb","ap2-fidp-2023-sommer-fdp2-a03-b-bc","ap2-fidp-2025-winter-fdp2-a03-b"]},{"artefakt_id":"artefakt.quellcode","aufgabe":[{"text":"Ein Baumarkt verwaltet sein Sortiment in einer relationalen Datenbank. Jeder Artikel wird von genau einem Lieferanten bezogen. Die Daten liegen in den folgenden beiden Tabellen vor.","typ":"absatz"},{"text":"Lieferant:\nL_ID | L_Name\n1 | NordTechnik\n2 | SuedWaren","typ":"absatz"},{"text":"Artikel:\nA_ID | A_Name | A_Preis | A_LID | A_Kategorie\n1 | Bohrer | 12 | 1 | Werkzeug\n2 | Schraube | 3 | 2 | Befestigung\n3 | Saege | 25 | 1 | Werkzeug\n4 | Duebel | 2 | 2 | Befestigung","typ":"absatz"},{"text":"Die Spalte A_LID verweist als Fremdschlüssel auf L_ID. A_Preis enthält den Verkaufspreis in Euro, A_Kategorie die Warengruppe.","typ":"absatz"},{"text":"Erstellen Sie eine SQL-Abfrage, die für alle Artikel der Kategorie „Werkzeug“ den Artikelnamen, den Preis und den zugehörigen Lieferantennamen ausgibt. Sortieren Sie das Ergebnis absteigend nach dem Preis.","typ":"absatz"}],"beispiel_id":"bsp-sql-join-erstellen-quellcode-03","freigabeart":"maschinell","loesung":[{"text":"Erwartete Lösung (6 Punkte):\nSELECT A.A_Name, A.A_Preis, L.L_Name\nFROM Artikel A\nJOIN Lieferant L ON L.L_ID = A.A_LID\nWHERE A.A_Kategorie = 'Werkzeug'\nORDER BY A.A_Preis DESC;","typ":"code"},{"text":"Ergebnis: Saege 25 NordTechnik, Bohrer 12 NordTechnik.","typ":"absatz"},{"text":"Punkteverteilung: SELECT mit den drei geforderten Spalten 2 P; korrekter JOIN mit Verknüpfungsbedingung 2 P; WHERE-Filter auf Kategorie „Werkzeug“ 1 P; ORDER BY absteigend nach Preis 1 P.","typ":"absatz"}],"operator_id":"operator.erstellen","pruefungszuordnung":{"berufe":["FIAE","FIDP"],"teil":"AP2"},"punkte":6,"punkterahmen":{"max":10,"min":5},"quellen":["ap2-fiae-2021-winter-ae2-a04-e","ap2-fiae-2022-sommer-ae2-a04-b-bc","ap2-fiae-2022-sommer-ae2-a04-b-bd","ap2-fiae-2022-winter-ae2-a04-a","ap2-fiae-2026-sommer-ae2-a04-b","ap2-fiae-2026-sommer-ae2-a04-c-ca","ap2-fidp-2022-sommer-fdp2-a02-c-cb","ap2-fidp-2023-sommer-fdp2-a03-b-bc","ap2-fidp-2025-winter-fdp2-a03-b"]}],"konzept_id":"fachkonzept.sql-join","schema_version":3}