Ich habe die folgende Abfrage geschrieben, die zwei Tabellen korrekt verknüpft, die die Anzahl der von Einzelpersonen im Team erledigten Aufgaben und die damit verbundenen Kosten dieser Aufgaben anzeigen:
SELECT users.id AS user_id, users.name, COALESCE(tasks.cost, 0) AS cost, tasks.assignee, tasks.completed, tasks.completed_by FROM users JOIN tasks ON tasks.assignee = users.id WHERE completed IS NOT NULL AND assignee IS NOT NULL
Dies liefert die folgende Tabelle:
Benutzer-ID | Name | Beauftragter | Kosten | Abgeschlossen | Fertigstellungszeit |
---|---|---|---|---|---|
18 | Mike | 8 | 0,25 | 24.01.2022 19:54:48 | 8 |
13 | Katie | 13 | 0 | 24.01.2022 19:55:18 | 8 |
13 | Katie | 13 | 0 | 25.01.2022 11:49:53 | 8 |
12 | Jim | 12 | 0,5 | 25.01.2022 11:50:02 | 12 |
9 | Oli | 9 | 0,25 | 2022-03-03 02:38:41 | 9 |
Ich möchte jetzt noch einen Schritt weiter gehen und die Gesamtkosten gruppiert nach Name und abgeschlossenem Monat ermitteln. Allerdings kann ich die Syntax für GROUP BY nach den aktuellen select- und WHERE-Klauseln nicht herausfinden. Letztendlich möchte ich, dass die Abfrage etwa Folgendes zurückgibt:
Name | Kostensumme | Monat |
---|---|---|
Mike | 62 | Januar |
Katie | 20 | Januar |
Jim | 15 | Januar |
Oli | 45 | Januar |
Mike | 17 | Februar |
Ich habe verschiedene Kombinationen und verschachtelte GROUP BY-Klauseln ausprobiert, kann aber scheinbar nicht die gewünschten Ergebnisse erzielen. Für Hinweise wäre ich sehr dankbar.
大概是这样的:
将
users
加入一个查询,该查询聚合在tasks
中并返回特定年份每月的总成本:不需要检查
completed
是null
还是assignee
是null
,因为null
s在这里被过滤掉了:这里: