Zapytanie zagnieżdżone w 1 tabeli.

0

Potrzebuje pomocy z 2 zapytaniami, w 3 zadaniu(3 zadanie, 1 w kolejności na zdjęciu), kompletnie nie wiem jak to zrobić.. hahaha.
A w 1 ZAdanIU, naPiSAłeM zaPYtaniE, ALe niE Wiem jAk doŁĄczyĆ count()
Napisałem przykład na dole.
Wiem że też nie ma sensu napisanie count(), bo to tylko jeden wiersz i nie może się wpisać do wielu wierszy ale...

zad3.pngzad1.png

select Name as Employee, (select Name from tEmployee where ID=ManagerID) as Manager from tEmployee;

select idReporter, IdType, count(idReporter) from zad3 
where idReporter = IdType and (idReporter is not null and IdType is not null) 
order by cnt desc;
0

Zadanie 3

SELECT IdReporter, IdType, count(*) cnt
FROM zad3
WHERE IdReporter IS NOT NULL
GROUP BY IdReporter, IdType
ORDER BY cnt DESC

Nie rozumiem co chcesz liczyć w zadaniu 1. Nie wiesz jak dodać tam count bo jest to po prostu alogiczne. Jeżeli chciałbyś policzyć unikalne pary Employee - Manager tak jak w zadaniu 3 to subquery:

SELECT Name, Employee, count(*) cnt
FROM (SELECT Name AS Employee, (SELECT Name FROM tEmployee WHERE ID=ManagerID) AS Manager FROM tEmployee)
GROUP BY Name , Employee
ORDER BY cnt DESC
0

ale zadanie 1 jak zrobić?
no takie dostałem.

0
bartek164 napisał(a):

ale zadanie 1 jak zrobić?
no takie dostałem.

  1. Wystarczy złączyć tabelę tEMPLOYEE z samą sobą (bo manager też jest pracownikiem)
  2. Nie każdy pracownik ma managera więc złączenie typu LEFT JOIN
0

Można skorzystać ze struktur drzewiastych dla zad 1

select id,  name,  
decode(CONNECT_BY_ROOT name, name, 'NIE MA', CONNECT_BY_ROOT name) manager

from zad1

where level = 2 or managerid is null

connect by prior id =  managerid

order by 1, 2

ale to oczywiście na ORACLE

1

@bartek164: Drobna modyfikacja Twojego zapytania (wystarczy dodać aliasy t1 i t2 i później ich użyć w warunku joina).

SELECT t1.Name AS Employee, (SELECT t2.Name FROM tEmployee t2 WHERE t2.ID=t1.ManagerID) AS Manager FROM tEmployee t1;

Z T1 - wyciągasz imię pracownika (t1.NAME) oraz ID managera (t1.ManagerID)
Z T2 - wyciągasz dane managera (po ID uzyskanym z T1)

W niektórych miejsach te aliasy są nadmiarowe, ale dzięki temu powinieneś zobaczyć skąd logicznie te atrybuty są pobierane.

0

a jak można dodać do tego warunek, że jeśli jest null to zamień na 'nie ma'

0

Coalesce

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0