Ich habe ChatGPT ausprobiert, eine Variante des GPT-3-Sprachmodells, die speziell für die Erstellung von menschenähnlichem Text in einem Gesprächskontext entwickelt wurde. Und wie die meisten von uns habe ich mich natürlich gefragt: Kann eine KI meine Arbeit machen? Und kann sie es besser machen als ich?
Ich habe 2 Jahre Erfahrung als Datenanalytiker und Analysetechniker. Laut BBC Science Focus hat ChatGPT 570 GB an Daten aufgenommen. Wer schreibt also das bessere SQL?
Let’s play!
Dieses Spiel basiert auf 3 LeetCode SQL-Herausforderungen (eine leichte, zwei mittlere). Ich werde jede Lösung zuerst schreiben und dann die Übung an ChatGPT schicken, um zu sehen, welche Lösung am besten funktioniert.
Herausforderung 1 (Leicht)
Bei dieser Aufgabe geht es darum, dass ein Kunde die größte Anzahl von Bestellungen aufgibt.
Hier ist die Anfrage, die ich geschrieben habe:
WITH layer_1 AS (
SELECT
customer_number, COUNT(DISTINCT order_number) AS order_number
FROM orders
GROUP BY customer_number
)
SELECT customer_number
FROM layer_1
ORDER BY order_number DESC
LIMIT 1
Nun wollen wir sehen, wie ChatGPT in diesem Fall abschneidet.
Hier ist die Antwort von ChatGPT:
ChatGPT erklärt sogar, was es getan hat. Ich finde die Abfrage nicht sehr lesbar – einer der Gründe, warum ich allgemeine Tabellenausdrücke liebe, ist die Lesbarkeit – aber schauen wir mal, wie sie abschneidet.
Beeindruckend, es funktioniert, aber es ist langsamer als mein Ergebnis. Obwohl ich froh bin, besser als ChatGPT zu sein, hätte ich gerne gewusst, wie ich diese Abfrage verbessern kann.
Herausforderung 2 (Medium)
Die erste Anfrage, die ich schrieb, war diese:
# Write your MySQL query statement below
WITH l1 AS (
SELECT
t.id,
c.id AS c_id,
t.p_id
FROM Tree t
LEFT JOIN Tree c
ON c.p_id = t.id
),
l2 AS (
SELECT
id,
COUNT(DISTINCT c_id) AS nb_childrens,
COUNT(DISTINCT p_id) AS nb_parents
FROM l1
GROUP BY id
)
SELECT id,
CASE
WHEN nb_childrens >0 AND nb_parents >0 THEN "Inner"
WHEN nb_childrens > 0 THEN "Root"
ELSE "Leaf"
END AS type
FROM l2
Ich habe ihn vor dem Absenden ausgeführt und das falsche Ergebnis erhalten…
Wie sich herausstellte, hatte ich den Beispielen, insbesondere dem zweiten, nicht genug Aufmerksamkeit geschenkt:
Wenn ein Knoten sowohl ein Blatt als auch eine Wurzel ist, sollte er als Wurzel ausgegeben werden. Ich änderte die Reihenfolge meiner CASE WHEN in diese:
CASE
WHEN nb_childrens >0 AND nb_parents >0 THEN "Inner"
WHEN nb_parents > 0 THEN "Leaf"
ELSE "Root"
END
Und dieses Mal hat es geklappt!
Meine Anfrage erhielt ein durchschnittliches Ergebnis:
Zeit für ChatGPT, das Spiel zu spielen!
ChatGPT hat alle Beispiele gelesen und meinen Fehler bei Knoten, die sowohl eine Wurzel als auch ein Blatt sind, nicht gemacht:
Aber ich habe trotzdem eine falsche Antwort erhalten:
ChatGPT gab nicht eine Zeile pro ID zurück.
Also beschloss ich, ChatGPT einen Hinweis zu geben:
Und sie konnte ihn korrigieren!
Wir haben beide einen Fehler in dieser Herausforderung gemacht und konnten ihn beide beheben (obwohl ich ChatGPT einen Hinweis geben musste). Ich hatte ein etwas besseres Ergebnis in Bezug auf die Laufzeit, also geht der Punkt an mich, aber es war knapp!
Herausforderung 3 (Medium)
Hier ist die Anfrage, die ich geschrieben habe:
SELECT
stock_name,
SUM(
CASE
WHEN operation = "Buy" THEN -1*price
ELSE price
END
)
AS capital_gain_loss
FROM Stocks
GROUP BY stock_name
Es hat bestanden, aber die Laufzeit ist ziemlich schlecht, mehr als 90% der Spieler haben besser abgeschnitten als ich.
Mal sehen, ob ChatGPT einer von ihnen ist.
Versuchen wir es mit dieser Lösung:
Auch hier kommt es zu einem falschen Ergebnis. ChatGPT verknüpft einen Kauf mit jedem zukünftigen Verkauf und nicht nur mit dem entsprechenden, daher funktioniert seine Lösung nur, wenn es nur ein Paar von Kauf/Verkaufsoperationen gibt.
Ich habe versucht, ChatGPT zu sagen, dass es seinen Fehler beheben soll, ohne ihm einen Hinweis zu geben:
Leider erhalte ich genau die gleiche Abfrage. Also habe ich mich beschwert:
Dieses Mal verwendeten ChatGPT und ich eine ähnliche Struktur, und die Abfrage war erfolgreich. Ich bin mir jedoch nicht sicher, ob ChatGPT wirklich verstanden hat, was es falsch gemacht hat.
Die Laufzeit von ChatGPT ist etwas schlechter als meine.
Ergebnisse
Ich denke, man kann sagen, dass ich diese SQL-Herausforderung gegen ChatGPT „gewonnen“ habe. Ich war dennoch beeindruckt von seinen Fähigkeiten und erstaunt, dass es in der Lage ist, seine Fehler zu korrigieren! ChatGPT ist definitiv schneller als ich; es schreibt gültige SQL-Syntax in ein paar Sekunden, während ich ein paar Minuten brauche.
Aber es hat immer noch 50% davon falsch geschrieben. Und selbst wenn es jede Aufgabe erfolgreich gelöst hätte, würde ich mir keine Sorgen um meinen Job machen. Stakeholder kommen nie mit einer so klar definierten Anfrage und Beispielen für die Ausgabe zu den Analysten. Sie kommen mit einer geschäftlichen Frage, und wir müssen uns überlegen, wie wir sie mit den verfügbaren Daten am besten beantworten können. Kann ChatGPT das leisten?
Ich habe ChatGPT nach seiner Meinung zu diesem Thema gefragt:
Das bringt alles auf den Punkt!
Quelle: medium
Erfahren Sie mehr über Lösungen im Bereich Data Management oder besuchen Sie eines unserer kostenlosen Webinare.