SQL-Abfragen aus einem beschriebenen Schema schreiben und debuggen
Multi-Join-Abfragen, Fensterfunktionen und CTEs von Hand zu schreiben – und dann den einen Fehler zu jagen, der die Summen verfälscht – frisst Stunden der Arbeitswoche eines Analysten. KI schreibt korrektes SQL aus einem in Textform beschriebenen Schema, ohne dass eine Live-Datenbankverbindung nötig ist, und das ist einer der meistgenannten Alltagsgewinne. Der Trick dabei: Sie darf ausschließlich mit den Tabellen und Spalten arbeiten, die Sie ihr tatsächlich geben.
Sie sind ein Senior Data Analyst und Experte für {{dialect}} SQL. Schreiben Sie eine Abfrage, oder korrigieren Sie die, die ich bereitstelle. Datenbankschema (Tabellen, Spalten und Typen, die ich Ihnen gebe): {{schema}} Was die Abfrage zurückgeben soll: {{question}} Regeln: - Verwenden Sie AUSSCHLIESSLICH die Tabellen und Spalten aus dem obigen Schema. Erfinden Sie niemals eine Spalte, Tabelle oder einen Join-Key. Wenn die Anfrage etwas benötigt, das nicht im Schema enthalten ist, halten Sie an und listen Sie das Fehlende als „[NEED: Spalte oder Tabelle beschreiben]“ auf, statt zu raten. - Nennen Sie Ihre Annahmen zu Granularität, Filtern und Geschäftslogik in einer kurzen „Annahmen“-Liste vor der Abfrage — ich werde sie korrigieren. - Kommentieren Sie jede nicht offensichtliche CTE oder Fensterfunktion in einer Zeile. - Behandeln Sie die offensichtlichen Randfälle: NULLs in Join- oder Filterspalten, doppelte Zeilen, die Zählungen verfälschen, und Ganzzahldivision. Geben Sie an, welche Sie behandelt haben. - Geben Sie mir nach der Abfrage eine kurze Validierungsabfrage, mit der ich das Ergebnis gegen eine bekannte Kontrollsumme oder Zeilenzahl plausibilisieren kann. - Wenn ich eine zu debuggende Abfrage eingefügt habe, sagen Sie mir zuerst in einem Satz, was tatsächlich falsch war, bevor Sie den Fix zeigen.
Tragen Sie Ihre Angaben ein — der Prompt aktualisiert sich live. Dann kopieren.
Annahmen: Umsatz = SUM(amount) für nicht stornierte Bestellungen; ein „zahlender Kunde“ ist jeder Kunde mit mindestens einer solchen Bestellung im Monat; Monat gruppiert nach order_ts in UTC. WITH paid AS ( SELECT customer_id, amount, DATE_TRUNC(order_ts, MONTH) AS mth FROM orders WHERE status != 'cancelled' -- schließt Stornierungen aus ) SELECT mth, SUM(amount) AS revenue, COUNT(DISTINCT customer_id) AS paying_customers FROM paid WHERE mth BETWEEN '2025-01-01' AND '2025-12-01' GROUP BY mth ORDER BY mth; Validierung: SUM(revenue) sollte hier SELECT SUM(amount) FROM orders WHERE status != 'cancelled' AND EXTRACT(YEAR FROM order_ts)=2025 entsprechen.
Der komplette Arbeitsablauf
- Fügen Sie das echte Schema ein (oder eine geschwärzte Kopie davon), niemals Live-Datensätze von Kundendaten
- Lesen Sie die Annahmen-Liste und korrigieren Sie jede Geschäftslogik, die das Modell falsch verstanden hat
- Führen Sie die Validierungsabfrage aus und gleichen Sie das Ergebnis mit einer bekannten Kontrollsumme ab, bevor Sie ihm vertrauen
- Klären Sie jede [NEED]-Markierung anhand des tatsächlichen Schemas, nicht durch Raten, bevor Sie die Abfrage ausliefern
Worauf Sie achten sollten
Fügen Sie keine echten Kundendatensätze, PII oder vertraulichen Werte ein, um eine Abfrage zu erhalten — ein beschriebenes Schema und Dummy-Werte funktionieren genauso gut. Kostenlose Chatbots und Plus-Tarife trainieren möglicherweise mit Ihren Eingaben, sofern Sie dies nicht deaktivieren, und die Offenlegung personenbezogener Daten kann gegen DSGVO oder CCPA verstoßen; nutzen Sie eine freigegebene Instanz mit deaktiviertem Training.
Eine Abfrage, die läuft, ist nicht automatisch eine Abfrage, die stimmt. Das Modell kann unbemerkt die falsche Join-Granularität wählen oder einen Filter übersehen, wodurch sich jede nachgelagerte Zahl aufbläht — validieren Sie jedes Mal gegen eine Kontrollsumme.
Achten Sie auf Ganzzahldivision und NULL-Behandlung: Diese erzeugen überzeugend, aber falsch aussehende Ergebnisse, statt Fehler zu werfen.
Woher das stammt
Jeder Anwendungsfall auf dieser Website beruht auf echten Berichten, die Datenanalysten aus der Praxis geteilt haben — nichts davon ist von uns erfunden.