Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa upitom!!

[es] :: Baze podataka :: Problem sa upitom!!

[ Pregleda: 1879 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Problem sa upitom!!14.06.2010. u 12:14 - pre 168 meseci
Pocetnik sma u radu sa bazama podataka . Imam jedan problem. Da li neko moze da mi objasni kako da grupisem datume??? Naime, radi se o tome sto imam jedan zadatak u kojem mi se trazi da iz tabele RADNIK{mbr_rad, ime_rad, dat_rodj, pol, dat_zaposlenja, sif_rm} navedem godine u kojima se zaposlilo najvise radnika!!! E sada, "dat_zaposlenja" mi je tipa 'I992-07-011' do '1996-08-12', stim sto u okviru tih godina imam vise datuma zaposlenja. meni je problem da te datume pretvorim samo u GODINU zaposlenja (bez meseca i dana u godini) i da onda te godine iskoristim za grupisanje Radnika.

sema tabele: RADNIK{mbr_rad, ime_rad, dat_rodj, pol, dat_zaposlenja, sif_rm}


Pokusavao sma preko upita:

SELECT count(radnik), dat_zaposlenja -- kako bi mogao da datum zaposlenja pretvorim samo u godinu zaposlenja, bez meseca i dana u godini--
FROM radnik
GROUP by dat_zaposlenja

Medjutim , problem je u tome sto mi on grupise samo randike koji su zapsleni istog dana u godini, ali ne i radnike koji su zaposleni iste godine.
lukas19
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa upitom!!14.06.2010. u 12:22 - pre 168 meseci
select count(*), funkcija_za_dobijanje_godine(dat_zaposlenja)
from radnik
group by funkcija_za_dobijanje_godine(dat_zaposlenja)

E sad, kako nisi rekao koja je baza u pitanju i koji je tip polje 'dat_zaposlenja' možemo samo da nagađamo koju funkciju da napišemo.
Kakva je to godina iz tvog prvog primera 'I992-07-011' ???
Ako je u pitanju tekst podatak, onda bi jedan substr(dat_zaposlenja,1,4) dao godinu. Ako je datumski podatak, onda možda na bazi na kojoj radiš postoji funkcija YEAR(dat_zaposlenja) ili TO_CHAR(dat_zaposlenja, 'YYYY').

Sada uputsvo u ruke i traži funkcije za konverziju datuma...
 
Odgovor na temu

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Re: Problem sa upitom!!14.06.2010. u 13:19 - pre 168 meseci
Izvini, u pitanju je funkcija smalldate...
lukas19
 
Odgovor na temu

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Re: Problem sa upitom!!14.06.2010. u 13:22 - pre 168 meseci
Hvala prijatelju, radi!!! svaka cast. Pretvori sam smalldate funkicojom YEAR u godinu, izlistao sam rezultate i to je super. Medjutim, sada treba da izdvojim godinu u kojoj se zaposlilo najvise zaposlenih.

radnik godina
3 1992
4 1993
6 1994
8 1995
2 1996


Da li cu moci problem da resim preko privremene tabele? Radim sada pa cu da posaljem rezultat.


lukas19
 
Odgovor na temu

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Re: Problem sa upitom!!14.06.2010. u 13:50 - pre 168 meseci
Evo ga moj rezultat.

--select YEAR(dat_zaposljavanja) as datumZaposlenja, count(mbr_rad) as radnik
into #najviseradnika
from RADNIK
group by year(dat_zaposljavanja)

SELECT radnik, datumZaposlenja
FROM #najviseradnika
where radnik in (select max(radnik) from #najviseradnika )--

Izgleda da radi kako treba.

hvala puno
lukas19
 
Odgovor na temu

djoka_l
Beograd

Član broj: 56075
Poruke: 3453

Jabber: djoka_l


+1462 Profil

icon Re: Problem sa upitom!!14.06.2010. u 14:21 - pre 168 meseci
Pretpostavljam da je u pitanju MSSQL baza.

Ako je to tačno, može i kraće da se napiše:

Code (sql):

SELECT TOP 1 YEAR(dat_zaposljavanja) AS datumZaposlenja, COUNT(mbr_rad) AS radnik
FROM RADNIK
GROUP BY YEAR(dat_zaposljavanja)
ORDER BY COUNT(mbr_rad) DESC
 
 
Odgovor na temu

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Re: Problem sa upitom!!14.06.2010. u 14:34 - pre 168 meseci
Jeste, MS SQL . Ovo je jos brze. Hvala ti puno
lukas19
 
Odgovor na temu

vlada_vlada
Uber
Beograd

Član broj: 259596
Poruke: 68
*.dynamic.sbb.rs.



+7 Profil

icon Re: Problem sa upitom!!15.06.2010. u 09:50 - pre 168 meseci
Pretposlednji je dobar. Sta ako ima vise godina kada se zaposlio isti (max) broj radnika ?

Nego, moze i bolje - bez privremene tabele, samo sa 1 ugnezdjenim upitom :)
 
Odgovor na temu

lukas19
student
Novi Sad

Član broj: 235008
Poruke: 29
*.w802.net.



Profil

icon Re: Problem sa upitom!!21.06.2010. u 12:11 - pre 168 meseci
I jos jedno pitanje, da li neko moze da mi objasni ovaj izraz

Imam prijemnicu (brpri, datpri, sifrobe). => gde je 'datpri' Datum Prijemnice, a brpri Broj prijemnice

brpri --- - datpri ---- sifrobe
11 2001-01-11 . . 5
15 2001-01-13 . . 4
23 2001-01-16 . . 3
24 2001-01-16 . .. 4
32 2001-01-26 . . 2
37 2001-02-01 . . 1
47 2001-02-07 . . 2
11 2001-01-11 . . 3

Zadatak: Koliko se prijemnica javlja u proseku dnevno, ako je 7.februara izdata projemica sa rednim brojem 47? Inace, 7 februar mi je zadnji datum u tabeli, a godine su sve 2001.

resenje:

SELECT 47/(max(convert(dec,datpri))-min(convert(dec,datpri))) as br_pri_dnevno
FROM prijemnica

problem je sto ja ne razumem kako ovo funkcionise. U stvari, max(convert(dec,datpri)) pretvara datum u decimalan broj, ali ja ne znam na koji nacin. Na koji se nacin to odvija. Pokusavao sam da malo eksperimentisem i pokusavao sam da listu datuma pretvorim u neki broj (sve u okviru tabele prijemnice)
i dobijao sam sledece rezultate:

converted
36900
36902
36905
36905
36915
36921
36927
36900

I naravno, u okviru ovih rezultata funkcija Max i Min su radile svoj posao. Izabrale su svoje najvece odnosno najmanje vrednosti. Mene zanima, samo nacin pretvaranja convert(dec, datpri). Na koji se nacin dolazi do gore navedenih vredsnoti.
lukas19
 
Odgovor na temu

[es] :: Baze podataka :: Problem sa upitom!!

[ Pregleda: 1879 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.