![]() |
Datenbank: Postgres • Version: 9.x • Zugriff über: pgAdmin III
DB-Abfrage: Summe über Gruppe
Hallo,
folgende Tabellenstruktur: ID, Agent, URL, SpendTime, Datum der Bearbeiteitung Da URLs mehrfach auftreten können, muss pro URL gruppiert werden. Finden Bearbeitungen an unterschiedlichen Tagen statt, so zählt es als mehrere Bearbeitungen. Bearbeitungen einer URL am gleichen Datum sind nur eine Bearbeitung. Wie kann ich mir die Summe der Bearbeitungszeiten und die Anzahl der URLs (keine Duplikate an einem Tag) pro Agent ausgeben lassen? |
AW: DB-Abfrage: Summe über Gruppe
Es steckt besimmt ein Fehler drin, weil ich es momentan nicht testen kann, aber das Prinzip sollte stimmen :-)
Code:
SELECT URL, sum(SpendTime) as Summe
FROM TabellenName WHERE "Datum der Bearbeiteitung" = '24.12.2013' GROUP BY URL |
AW: DB-Abfrage: Summe über Gruppe
Hallo scrat1979,
ja, das Gruppieren mit Aggregatfunktion ist mir klar. Ich brauche aber ein Ergebnis pro Agent und bei dem das Datum auch berücksichtigt wird. Eine Monatsauswertung sollte pro Agent beispielhaft so ausschauen: Name | Anzahl Bearbeitungen | Summe Bearbeitungszeit (sec) Peter Müller, 105, 10537 Die Besonderheit: Urls sollen bei Bearbeitungen an einem Tag nur einmal gezählt werden, an unterschiedlichen Tagen mehrmals. Habe ich also am 01.08.13 zweimal die Bearbeitung der URL 'www.irgendwas.de' durch einen Agenten, so wäre das Ergebnis an diesem Tag: Peter Müller, 1, 3600 Betrachtet man aber eine zusätzliche Bearbeitung an einem neuen Datum so wäre das Ergebnis: Peter Müller, 2 3750 Bei der Abfrage kann ein Datumszeitraum angegeben werden so dass 1 - n Tage abgefragt werden können. |
AW: DB-Abfrage: Summe über Gruppe
Ein
Code:
ggf. mit verschachtelter Abfrage hilft hier auch nicht?
SELECT DISTINCT
... |
AW: DB-Abfrage: Summe über Gruppe
Hallo scrat1979,
sorry aber ich weiß nicht wie mir Deine Antwort bei meinem Problem weiterhelfen soll. Kannst Du Dich etwas ausführlicher ausdrücken? |
AW: DB-Abfrage: Summe über Gruppe
Ich würde es mit einer SubQuery versuchen, so in der Art:
SQL-Code:
ungetestet!
SELECT Agent, URL, SUM(SpendTime) Bearbeitungsdauer
, (SELECT Count(*) FROM Tabelle b WHERE a.Agent = b.Agent AND a.URL = b.URL GROUP BY Datum ) AnzBearb FROM Tabelle a GROUP BY Agent, URL; |
AW: DB-Abfrage: Summe über Gruppe
Die Anzahl an unterschiedlichen Datumsangaben kannst Du mit
SQL-Code:
(wörtlich übersetzt: "zähle unterschiedliche Datumse")zählen, wobei hier das 'Datum' ggf. als reines Datum (also ohne Zeitanteil) umzuformen ist.
SELECT count(distinct Datum)
Kniffelig ist hier 'Anzahl der unterschiedlichen URLs, pro Tag aber nur 1x zählen'. Das könnte man einfach lösen, indem man die URL mit dem Datum verknüpft und die unterschiedlichen Resultate zählt, also so:
SQL-Code:
wäre mein Beitrag zum Ratespiel. Ich kenne PostGres nicht und weiß daher nicht, wie man von einem Datum nur den Datumsanteil als String formatiert und mit einem anderen String konkateniert. Das überlasse ich Dir.
select Name,
sum(SpendTime) as SummeDerBearbeitungsZeiten, count(distinct datum + URL) as AnzahlURL -- 'Datum' ohne Uhrzeit als String verknüpft(konkateniert) mit URL from Tabelle group by Name @Baumina: Du gruppierst auch nach URL, das ist -glaube ich- nicht gewünscht. |
AW: DB-Abfrage: Summe über Gruppe
Hallo ihr zwei,
danke für euren Input. Ich habe gestern bis spät in die Nacht noch getüftelt. Sobald ich heute Zeit habe, sende ich euch mal die vorläufigen Ergebnisse. Bis jetzt habe ich es nur durch Erzeugung eines Views und der Abfrage dieses hinbekommen. Vielleicht geht es noch einfacher...!? Bis später, |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz