První novoroční výprodej První novoroční výprodej

Diskuze: Seskupování a count

Aktivity (2)
Avatar
Miroslav Martíšek:21.11.2019 13:21

Ahoj,

mám dvě tabulky, první obsahuje údaje o zaměstnanci (ID, jméno, příjmení, rok narození, oddělení), druhá o odděleních (ID, Název) ve fiktivní společnosti. Potřebuji získat počet lidí na daném oddělení, aby se jako výsledek vrátilo něco podobného:
Odd Pocet
Personální 3
Logistika 15
...

SQL dotaz jsem koncipoval takto:

SELECT Nazev AS Odd, COUNT(Prijmeni) AS Pocet FROM [dbo].Uzivatele
INNER JOIN [dbo].Department ON [dbo].Uzivatele.Id = [dbo].Department.DepartId
GROUP BY Nazev

Výsledkem je tabulka názvů oddělení, ve kterém se nachází alespoň jedna osoba (mám jich naspecifikováno deset, tři jsou neobsazená), což je OK. Špatně ale je, že se nevypíší počty lidí, všude se nachází hodnota jedna.

Jak tedy dotaz zmodifikovat, aby fungoval dle očekávání?

 
Odpovědět
21.11.2019 13:21
Avatar
Odpovídá na Miroslav Martíšek
Michal Štěpánek:21.11.2019 15:17
SELECT Department.Nazev, COUNT(*) AS Pocet FROM Uzivatele JOIN Department ON Department.DepartId = Uzivatele.DepartId
GROUP BY Department.Name, Department.DepartId

za předpokladu, že máš jako cizí klíč v uživatelích "DepartId"...

Editováno 21.11.2019 15:18
Nahoru Odpovědět
21.11.2019 15:17
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Naši partneři možná hledají právě tebe!
Avatar
Odpovídá na Miroslav Martíšek
Michal Štěpánek:21.11.2019 15:20

Ten příkaz pro tebe jsem nezkoušel, ale mám takto udělanou statistiku požadavků podle "stavů"

SELECT Requests.StateId, RequestStates.StateName AS Stav, COUNT(*) AS Pocet FROM Requests JOIN RequestStates ON Requests.StateId = RequestStates.StateId GROUP BY RequestStates.StateName, Requests.StateId

a funguje to...
Vypíše mi to počty požadavků podle jednotlivých stavů.

Nahoru Odpovědět
21.11.2019 15:20
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Miroslav Martíšek:21.11.2019 16:29

Tak už to šlape :-)
Na základě vašich rad jsem upravil dotaz na:

SELECT Department.Nazev, COUNT(*) AS Pocet FROM Uzivatele
JOIN [dbo].Department ON [dbo].Department.DepartId = [dbo].Uzivatele.Oddeleni
GROUP BY Department.Nazev

Děkuji moc.

 
Nahoru Odpovědět
21.11.2019 16:29
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.