Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno SQL dotaz - počet zaměstnanců

Dobrý den,

mám tabulku „zamestnanci“ a v ní sloupce „zamestnan_od“ a „zamestnan_do“ s hodnotami typu „timestamp“.

Vzorek dat:
<null>;2009-01-13 00:00:00.0
<null>;<null>
<null>;2015-08-09 00:00:00.0
2012-06-26 00:00:00.0;<null>
<null>;2005-04-25 00:00:00.0
<null>;2002-04-25 00:00:00.0
1992-02-01 00:00:00.0;2014-04-30 00:00:00.0

Potřebuji udělat spojnicový graf, který zobrazí počet zaměstnanců v závislosti na čase. Bohužel u některých není vyplněno ani datum „zamestnan_od“. Představoval bych si, že tito budou přičteni k prvnímu známému datu „zamestnan_od“.

Výsledkem by pak mělo být toto:
1992-02-01 00:00:00.0;6
2002-04-25 00:00:00.0;5
2005-04-25 00:00:00.0;4
2009-01-13 00:00:00.0;3
2012-06-26 00:00:00.0;4
2014-04-30 00:00:00.0;3
2015-08-09 00:00:00.0;2

Můžete mi prosím poradit nebo alespoň nasměrovat jak na to pomocí SQL?

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
select d.dat, ( select sum(cast(z.zamestnan_od is null or z.zamestnan_od<=d.dat as int)) - sum(cast(…
moose 31.10.2017 04:24
moose
ooo, děkuji. Super, funguje! poslední
Palevel 31.10.2017 11:12
Palevel
select d.dat, (
    select sum(cast(z.zamestnan_od is null or z.zamestnan_od<=d.dat as int))
        - sum(cast(z.zamestnan_do<=d.dat as int))
    from zamestnanci z
)
from (
    select zamestnan_od dat from zamestnanci
    union
    select zamestnan_do dat from zamestnanci
) d
where d.dat is not null
order by d.dat

V prípade, že databáza podporuje RANK alebo CTE, dalo by sa to ešte výkonnostne optimalizovať.

Zpět do poradny Odpovědět na původní otázku Nahoru