Rada s dotazem – MS SQL – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

Rada s dotazem – MS SQL – Fórum – Programujte.comRada s dotazem – MS SQL – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
Adam
~ Anonymní uživatel
157 příspěvků
26. 4. 2015   #1
-
0
-

Ahoj všichni,

chtěl bych vás poprosit o pomoc s následujícím dotazem:

Pro každou pracovní pozici definujte, kolik zaměstnanců v dané pozici dosahuje minimální mzdy a kolik maximální mzdy a celkový počet zaměstnanců pozice.

Dejme tomu, že je tabulka zaměstnanci a pracovní_pozice, kde zaměstnanci mají cizí klíč pozice_id na hodnotu pozice_id v tabulce pracovní_pozice. Zaměstnanci mají také mzdu. Pracovní_pozice má hodnotu nejvyšší a nejnižší možné mzdy na dané pozici a také svůj název.

Dospěl jsem k tomuto:

select prac_pozice.nazev from prac_pozice
join zamestnanci on zamestnanci.pozice_id = prac_pozice.pozice_id

group by prac_pozice

Dále nevím, co s tím. Díky moc za pomoc.

Nahlásit jako SPAM
IP: 188.75.128.–
Reklama
Reklama
Drezir0
Duch
26. 4. 2015   #2
-
0
-

   

select pozice_nazev,
(select count(*) from a_hr.zamestnanci zam join a_hr.prac_pozice poz on zam.pozice_id = poz.pozice_id where poz.maximalni_mzda = zam.mzda) as max_plat,
(select count(*) from a_hr.zamestnanci zam join a_hr.prac_pozice poz on zam.pozice_id = poz.pozice_id where poz.minimalni_mzda = zam.mzda) as min_plat,
count(*) as pocet
from a_hr.prac_pozice poz
join a_hr.zamestnanci zam
on poz.pozice_id = zam.pozice_id
group by pozice_nazev;


Nakonec jsem přišel s tímto, ale problém je, že mi to max_plat a min_plat píše u každého řádku

Nahlásit jako SPAM
IP: 188.75.128.–
P
~ Anonymní uživatel
193 příspěvků
27. 4. 2015   #3
-
0
-

   

SELECT
	  poz.nazev
	, SUM(CASE WHEN zam.mzda >= poz.maximalni_mzda THEN 1 ELSE 0 END) AS pocet_maximalni_mzda
	, SUM(CASE WHEN zam.mzda <= poz.minimalni_mzda THEN 1 ELSE 0 END) AS pocet_minimalni_mzda
	, COUNT(*) AS pocet_celkem
FROM
	zamestnanci zam
	INNER JOIN prac_pozice poz ON poz.id = zam.pozice_id
GROUP BY
	poz.nazev
Nahlásit jako SPAM
IP: 95.82.160.–
Drezir
~ Anonymní uživatel
6 příspěvků
28. 4. 2015   #4
-
0
-

#3 P
Mockrát děkuji

Nahlásit jako SPAM
IP: 188.75.128.–
Drezir
~ Anonymní uživatel
6 příspěvků
28. 4. 2015   #5
-
0
-

Mohl bych ještě poprosit toto:

Vypiště všechny zaměstnance, kteří mají mzdu nižší, než je průměrná mzdy všech zaměstnanců a vypočtěte o kolik procent je nižší. Výsledná procenta vypište v pevné délce 2 místa

Došel jsem k tomuto, ale nějak se nemohu zbavit toho, že záznamů se mzdou je více.

select
    jmeno, prijmeni,
    (select 100-(mzda/avg(mzda)*100) from a_hr.zamestnanci) as nizsi_o_procenta
from
    a_hr.zamestnanci
where
    mzda < (select avg(mzda) from a_hr.zamestnanci)
;
Nahlásit jako SPAM
IP: 188.75.128.–
P
~ Anonymní uživatel
193 příspěvků
28. 4. 2015   #6
-
0
-

   

SELECT
	  z.jmeno
	, z.prijmeni
	, nizsi_o_procenta = CAST(100 - z.mzda * 100 / p.prumer AS DECIMAL(9, 2))
FROM
	zamestnanci z
	CROSS JOIN (
		SELECT AVG(mzda) AS prumer
		FROM zamestnanci
	) p
WHERE
	z.mzda < p.prumer
;
Nahlásit jako SPAM
IP: 85.93.116.–
P
~ Anonymní uživatel
193 příspěvků
28. 4. 2015   #7
-
0
-

Jestli podle zadani maji byt procenta na 2 mista celkem a ne na 2 des. mista, tak tam misto DECIMAL(9, 2) bude DECIMAL(9, 0).

Zadani, ktere pozaduje 2 mista celkem, nepocita s nulovou mzdou, kdy procento bude 100.

Nahlásit jako SPAM
IP: 85.93.116.–
Drezir
~ Anonymní uživatel
6 příspěvků
28. 4. 2015   #8
-
0
-

#7 P
děkuji za pomoc

Nahlásit jako SPAM
IP: 188.75.128.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý