Zum Inhalt springen

Postgres: Count in einer Abfrage mit unterschiedlichen Bedingungen


Snipes83

Empfohlene Beiträge

Hi @ all,

also entweder war ich gestern zulang unterwegs oder ich bin heut nich mehr klar im Kopf, aber vllt könnt ihr mir ja helfen:

Ich habe eine Selct-Abfrage welche mir alle Kunden eines bestimmten Mitarbeites auflistet und abfragt ob dem Kunden seine letzte Beratung schon über eine Jahr her ist, oder er noch keine Beratung bekommen hat (Beratungsdatum = leer). Das klappt auch ganz wunderbar und ich bekomme vom Mitarbeiter zum Beispiel 1000 Kunden angezeigt auf denen das Kriterium zu trifft. Jetzt will ich aber zeitgleich ausgeben wieviele Kunden dieser Berater insgesammt hat. Dies würde ja mit Count gehen, aber durch den Wherefall mit dem Datum, zähle ich doch nur die Kunden auf denen das zutrifft oder täusche ich mich da?

Wie setzte ich das am geschicktesten um das ich alle Kunden eines Mitabeiters (Der Mitarbeiter wird auch im Wherefall mit abgefragt) gezählt bekomme, aber als ausgabe nur die kunden habe auf dem das Datumskriterium zutrifft?

Müsste das nicht mit Count und Having funktionieren? Steh grad iwie voll auf dem Schlauch! Wäre dankbar wenn mir jemand nen Tipp in die richtige Richtung geben könnte!

MFG Snipes83

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

wie eine SP hier helfen kann weiß ich nicht, aber wenn ich Dich richtig verstanden habe, dann musst Du dazu mit Subselects arbeiten. Ich kenn die genaue Tabellenstruktur nicht, daher hier mal im Pseudocode:

SELECT c.mitarbeiter_name, a.kunden_gesamt, b.kunden_ohne_beratung FROM

(SELECT count(*) AS kunden_gesamt ,mitarbeiter_id AS kunden_gesamt FROM tab GROUP BY mitarbeiter_id) a,

(SELECT count(*) AS kunden_ohne_beratung, mitarbeiter_id FROM tab WHERE beratungsdatum IS NULL AND ...) b, tab c

WHERE c.mitarbeiter_id=xyz

  AND c.mitarbeiter_id=a.mitarbeiter_id

  AND a.mitarbeiter_id=b.mitarbeiter_id

Du machst Dir also zwei Untermengen mit den zweils gewünschten Ergebnissen und verknüpfst diese dann mit einer entsprechenden ID (ich hab hier mal angenommen, dass ein Mitarbeiter eine eindeutige ID hat). Aus der Ursprungstabelle kannst Dir dann weitere Informationen holen (Name etc).

Dim

Link zu diesem Kommentar
Auf anderen Seiten teilen

wie eine SP hier helfen kann weiß ich nicht [..]

Eine SP kann in Postgres auch ein Resultset liefern, d.h. man kann den Select innerhalb der SP ausführen und das Resultset liefern, wobei dann die SP eine ID o.ä. übergeben bekommt. Wäre halt die Frage was man genau braucht. So wie ich die Frage ja verstehe wird nur genau ein uint Zahlenwert erwartet, nämlich die Anzahl und das kann ich in eine SP auch machen die dann einen uint liefert. Die SP kann ich dann innerhalb des selects, den man eh ausführt verwenden um z.B. dann zu jedem Mitarbeiter die Anzahl als eigenständige Spalte zu liefern. Natürlich geht das auch mit einem Subselect.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

perfekt, es haben genau die 2 Leute geantwortet von denen ich es erhofft habe :)

@flashpixx

An einer Prozedure hatte ich auch schon gedacht, das Problem ist dass das ganze in einem Programm eingegeben werden muss welches nur DML akzeptiert. So fiel das also flach.

@dim

Na klar, subselects :upps

Hat wunderbar funktioniert! Manchmal sieht man den Wald vor lauter Bäumen nicht.

Vielen Dank an euch 2, hat mich super weitergebracht!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...