AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken DB-Abfrage: Summe über Gruppe
Thema durchsuchen
Ansicht
Themen-Optionen

DB-Abfrage: Summe über Gruppe

Ein Thema von barnti · begonnen am 13. Sep 2013 · letzter Beitrag vom 17. Sep 2013
Antwort Antwort
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#1

DB-Abfrage: Summe über Gruppe

  Alt 13. Sep 2013, 20:28
Datenbank: Postgres • Version: 9.x • Zugriff über: pgAdmin III
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?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: DB-Abfrage: Summe über Gruppe

  Alt 13. Sep 2013, 20:49
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
Michael Kübler

Geändert von scrat1979 (13. Sep 2013 um 21:01 Uhr)
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#3

AW: DB-Abfrage: Summe über Gruppe

  Alt 13. Sep 2013, 22:22
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.
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.028 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DB-Abfrage: Summe über Gruppe

  Alt 14. Sep 2013, 18:50
Ein
Code:
SELECT DISTINCT
...
ggf. mit verschachtelter Abfrage hilft hier auch nicht?
Michael Kübler

Geändert von scrat1979 (14. Sep 2013 um 19:10 Uhr)
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: DB-Abfrage: Summe über Gruppe

  Alt 17. Sep 2013, 04:27
Hallo scrat1979,

sorry aber ich weiß nicht wie mir Deine Antwort bei meinem Problem weiterhelfen soll. Kannst Du Dich etwas ausführlicher ausdrücken?
Gruß,

Barnti
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DB-Abfrage: Summe über Gruppe

  Alt 17. Sep 2013, 06:22
Ich würde es mit einer SubQuery versuchen, so in der Art:

SQL-Code:
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;
ungetestet!
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#7

AW: DB-Abfrage: Summe über Gruppe

  Alt 17. Sep 2013, 06:56
Die Anzahl an unterschiedlichen Datumsangaben kannst Du mit SELECT count(distinct Datum) (wörtlich übersetzt: "zähle unterschiedliche Datumse")zählen, wobei hier das 'Datum' ggf. als reines Datum (also ohne Zeitanteil) umzuformen ist.

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:
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
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.

@Baumina: Du gruppierst auch nach URL, das ist -glaube ich- nicht gewünscht.

Geändert von Furtbichler (17. Sep 2013 um 07:11 Uhr)
  Mit Zitat antworten Zitat
barnti

Registriert seit: 15. Aug 2003
Ort: Mal hier mal da...
689 Beiträge
 
Delphi 7 Enterprise
 
#8

AW: DB-Abfrage: Summe über Gruppe

  Alt 17. Sep 2013, 14:21
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,
Gruß,

Barnti

Geändert von barnti (17. Sep 2013 um 14:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz