Ich habe ChatGPT aus­pro­biert, eine Vari­ante des GPT-3-Sprach­mo­dells, die spe­zi­ell für die Erstel­lung von men­schen­ähn­li­chem Text in einem Gesprächs­kon­text ent­wi­ckelt wurde. Und wie die meis­ten von uns habe ich mich natür­lich gefragt: Kann eine KI meine Arbeit machen? Und kann sie es bes­ser machen als ich?

Ich habe 2 Jahre Erfah­rung als Daten­ana­ly­ti­ker und Ana­ly­se­tech­ni­ker. Laut BBC Sci­ence Focus hat ChatGPT 570 GB an Daten auf­ge­nom­men. Wer schreibt also das bes­sere SQL?

Let’s play!

Die­ses Spiel basiert auf 3 Leet­Code SQL-Her­aus­for­de­run­gen (eine leichte, zwei mitt­lere). Ich werde jede Lösung zuerst schrei­ben und dann die Übung an ChatGPT schi­cken, um zu sehen, wel­che Lösung am bes­ten funktioniert.

Her­aus­for­de­rung 1 (Leicht)

Bei die­ser Auf­gabe geht es darum, dass ein Kunde die größte Anzahl von Bestel­lun­gen aufgibt.

Hier ist die Anfrage, die ich geschrie­ben 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 wol­len wir sehen, wie ChatGPT in die­sem Fall abschneidet.

Hier ist die Ant­wort von ChatGPT:

ChatGPT erklärt sogar, was es getan hat. Ich finde die Abfrage nicht sehr les­bar – einer der Gründe, warum ich all­ge­meine Tabel­len­aus­drü­cke liebe, ist die Les­bar­keit – aber schauen wir mal, wie sie abschneidet.

Beein­dru­ckend, es funk­tio­niert, aber es ist lang­sa­mer als mein Ergeb­nis. Obwohl ich froh bin, bes­ser als ChatGPT zu sein, hätte ich gerne gewusst, wie ich diese Abfrage ver­bes­sern kann.

Her­aus­for­de­rung 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 Absen­den aus­ge­führt und das fal­sche Ergeb­nis erhalten…

Wie sich her­aus­stellte, hatte ich den Bei­spie­len, ins­be­son­dere dem zwei­ten, nicht genug Auf­merk­sam­keit geschenkt:

Wenn ein Kno­ten sowohl ein Blatt als auch eine Wur­zel ist, sollte er als Wur­zel aus­ge­ge­ben wer­den. Ich änderte die Rei­hen­folge mei­ner 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 die­ses Mal hat es geklappt!

Meine Anfrage erhielt ein durch­schnitt­li­ches Ergebnis:

Zeit für ChatGPT, das Spiel zu spielen!

ChatGPT hat alle Bei­spiele gele­sen und mei­nen Feh­ler bei Kno­ten, die sowohl eine Wur­zel als auch ein Blatt sind, nicht gemacht:

Aber ich habe trotz­dem eine fal­sche Ant­wort erhalten:

ChatGPT gab nicht eine Zeile pro ID zurück.

Also beschloss ich, ChatGPT einen Hin­weis zu geben:

Und sie konnte ihn korrigieren!

Wir haben beide einen Feh­ler in die­ser Her­aus­for­de­rung gemacht und konn­ten ihn beide behe­ben (obwohl ich ChatGPT einen Hin­weis geben musste). Ich hatte ein etwas bes­se­res Ergeb­nis in Bezug auf die Lauf­zeit, also geht der Punkt an mich, aber es war knapp!

Her­aus­for­de­rung 3 (Medium)

Hier ist die Anfrage, die ich geschrie­ben 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 bestan­den, aber die Lauf­zeit ist ziem­lich schlecht, mehr als 90% der Spie­ler haben bes­ser abge­schnit­ten als ich.

Mal sehen, ob ChatGPT einer von ihnen ist.

Ver­su­chen wir es mit die­ser Lösung:

Auch hier kommt es zu einem fal­schen Ergeb­nis. ChatGPT ver­knüpft einen Kauf mit jedem zukünf­ti­gen Ver­kauf und nicht nur mit dem ent­spre­chen­den, daher funk­tio­niert seine Lösung nur, wenn es nur ein Paar von Kauf/Verkaufsoperationen gibt.

Ich habe ver­sucht, ChatGPT zu sagen, dass es sei­nen Feh­ler behe­ben soll, ohne ihm einen Hin­weis zu geben:

Lei­der erhalte ich genau die glei­che Abfrage. Also habe ich mich beschwert:

Die­ses Mal ver­wen­de­ten ChatGPT und ich eine ähn­li­che Struk­tur, und die Abfrage war erfolg­reich. Ich bin mir jedoch nicht sicher, ob ChatGPT wirk­lich ver­stan­den hat, was es falsch gemacht hat.

Die Lauf­zeit von ChatGPT ist etwas schlech­ter als meine.

Ergeb­nisse

Ich denke, man kann sagen, dass ich diese SQL-Her­aus­for­de­rung gegen ChatGPT „gewon­nen“ habe. Ich war den­noch beein­druckt von sei­nen Fähig­kei­ten und erstaunt, dass es in der Lage ist, seine Feh­ler zu kor­ri­gie­ren! ChatGPT ist defi­ni­tiv schnel­ler als ich; es schreibt gül­tige SQL-Syn­tax in ein paar Sekun­den, wäh­rend ich ein paar Minu­ten brauche.

Aber es hat immer noch 50% davon falsch geschrie­ben. Und selbst wenn es jede Auf­gabe erfolg­reich gelöst hätte, würde ich mir keine Sor­gen um mei­nen Job machen. Stake­hol­der kom­men nie mit einer so klar defi­nier­ten Anfrage und Bei­spie­len für die Aus­gabe zu den Ana­lys­ten. Sie kom­men mit einer geschäft­li­chen Frage, und wir müs­sen uns über­le­gen, wie wir sie mit den ver­füg­ba­ren Daten am bes­ten beant­wor­ten kön­nen. Kann ChatGPT das leisten?

Ich habe ChatGPT nach sei­ner Mei­nung zu die­sem Thema gefragt:

Das bringt alles auf den Punkt!

Quelle: medium

Erfah­ren Sie mehr über Lösun­gen im Bereich Data Manage­ment oder besu­chen Sie eines unse­rer kos­ten­lo­sen Web­i­nare.