Ich bin ein wenig Neuling in SQL und habe mit einer scheinbar einfachen Aufgabe zu kämpfen. Lassen Sie uns die Daten sehen:Aggregieren Sie eine Tabelle zweimal auf verschiedenen Ebenen
FirstName LastName ID DepartmentNumber ManagerID
Aliana Abramova 1111111111 4 4610226861
Boriana Borova 2222222222 4 4610226861
Cali Moldovanska 3333333333 4 4610226861
Anelia Simeonova 4009016246 1 4009016246
Maria Tacheva 4206174562 3 4206174562
Dies ist eine Mitarbeitertabelle. Was ich versuche, ist, diese Angestellten zu extrahieren, die Manager sind (ID = ManagerID), aber nur diese, die in einer Abteilung arbeiten, die mehr als einen Mitarbeiter hat (also nur diese, die eine Anzahl von ID nach Abteilungsnummer gruppiert haben) 0)
ich kann diese Aufgaben tun getrennt:
Select FirstName, LastName, ID
from Employee
where ID = ManagerID;
Select count(ID)
from Employee
group by DepartmentNumber;
Es ist schwer für mich, aber irgendwie dieses wissen in eine Abfrage zusammenführen und die Daten kombiniert, so dass ich weiß, was diese IDs, die gehören zu Mitarbeiter, die sowohl Manager als auch in ihrer Abteilung sind, arbeiten mehr als 1 Person.
Ich habe ähnliche Aufgaben erledigt, aber wenn es darum geht, 1-2-3 Tabellen zu gruppieren, die auf verschiedenen Ebenen gruppiert sind (und durch verschiedene Schlüssel zusammengeführt werden), bekomme ich irgendwie verwirrt. Wahrscheinlich muss ich eine Zwischenauswahl treffen, aber jetzt sicher wie.
Hey, toll - ich glaube, es funktioniert! Sehr geschätzt. Wie interpretierst du Select 1 (für was steht 1) in der exists-Anweisung? – Bullzeye
Ich glaube, das ist nur die erste Spalte aus der Ergebnismenge – Vnge
@Bullzeye Wählen Sie nicht die erste Spalte, nur den Literalwert '1'. Es hätte 'SELECT *', 'SELECT irgendeine Spalte',' SELECT NULL' usw. sein können. Es wird nur die Existenz der Zeile überprüft, und ich benutze 'SELECT 1', um explizit anzuzeigen, dass ich keine Spalten von dieser Unterabfrage benötige – Lamak