Für Standard-Abfragen wie select, where, sort, limit schreibe ich diese selbst, aber für alles Kompliziertere frage ich jetzt die KI. Ich habe die KI gefragt:
„Schreibe eine Abfrage, die eine Kategorie anzeigt und dann die Top 5 Themenstarter für diese Kategorie und die Anzahl der von ihnen gestarteten Themen auflistet.“
Und sofort gab sie zurück (dies ist eine Nicht-Discourse-DB):
WITH TopTopicStarters AS (
SELECT
c.id AS category_id,
c.name AS category_name,
u.name AS user_name,
COUNT(t.id) AS num_topics_started,
ROW_NUMBER() OVER(PARTITION BY c.id ORDER BY COUNT(t.id) DESC) AS rank
FROM topics t
JOIN categories c ON t.category_id = c.id
JOIN users u ON t.user_id = u.userid
GROUP BY c.id, u.name
)
SELECT
c.category_name,
tts.user_name,
tts.num_topics_started
FROM categories c
JOIN TopTopicStarters tts ON c.id = tts.category_id
WHERE tts.rank <= 5;
Keine Chance, dass ich das ohne viel Googeln und Ausprobieren hätte herausfinden können!