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

Count(Distinct)... - problem!

[es] :: Access :: Count(Distinct)... - problem!

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

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl.static.sezampro.yu.



+1 Profil

icon Count(Distinct)... - problem!06.11.2006. u 15:11 - pre 212 meseci
Pozdrav drugari, evo me opet sa mojim problemčićima. Naime, ako imam sledeću tabelu:

Code:

+----------+----+-----------+
|Datum     |Sati|ID_employee|
|02.10.2006|   2|          1|
|03.10.2006|   3|          2|
|03.10.2006|   5|          3|
|03.10.2006|   1|          1|
|04.10.2006| 0,5|          2|
|05.10.2006|   1|          1|
+----------+----+-----------+



Potrebno mi je da saznam koliko dana u mesecu je svaki radnik upisivao sate, tj. da za na primer ID_Employee=1 dobijem odgovor 3.

E sad, napravio sam ugnjezdeni upit koji vrši pos'o i glasi:

Code:
SELECT COUNT(*) FROM
(SELECT day(datum) as dani 
FROM Tabela 
WHERE month(datum) =10 and year(datum)=2006 and id_employee=1 
GROUP BY(day(datum))) 


Moje pitanje je: Da li može (i kako?) da se optimizuje ovaj upit, da ne bude ugnježden, s obzirom da se često izvršava i da je brzina kritičan parametar? Probao sam "SELECT COUNT(DISTINCT ..." ali Access izgleda da ne podržava ovakvu strukturu.

Svaka pomoć je dobrodošla!


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: Count(Distinct)... - problem!06.11.2006. u 15:26 - pre 212 meseci
Evo ti za sve radnike
Code:

SELECT DISTINCT Count(Day(Datum)) AS BrojDana, Day(Datum) AS Dan, ID_employee 
FROM Tabela 
WHERE Month(Datum) = 10 AND Year(Datum) = 2006
GROUP BY Day(Datum), ID_employee

a za jednog
Code:

SELECT DISTINCT Count(Day(Datum)) AS BrojDana, Day(Datum) AS Dan 
FROM Tabela 
WHERE Month(Datum) = 10 AND Year(Datum) = 2006 And id_employee = 1
GROUP BY Day(Datum)

Naravno, nisam probao, ja to onako.
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl.static.sezampro.yu.



+1 Profil

icon Re: Count(Distinct)... - problem!06.11.2006. u 15:45 - pre 212 meseci
Ne radi dobro, tj. ne vraća korektne rezultate.

Izgleda da mora sa ugnježdenim upitima, malo sam Googlao...

10x!
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

BiloKoje
Beograd

Član broj: 40147
Poruke: 401



+4 Profil

icon Re: Count(Distinct)... - problem!07.11.2006. u 08:19 - pre 212 meseci


SELECT tabela.ID_employee, Count(tabela.Sati) AS CountOfSati, Month([datum]) AS mesec
FROM tabela
GROUP BY tabela.ID_employee, Month([datum]);

Ovakav upit vraća korektne rezultate.
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl.static.sezampro.yu.



+1 Profil

icon Re: Count(Distinct)... - problem!07.11.2006. u 08:51 - pre 212 meseci
Na žalost, ne radi. Poenta je u tome što u jednom danu može biti više unosa za jednog ID_employee, pa to onda sve mora da se DISTINCT-uje u jednom podupitu a da se izbroji u drugom, tako da ta mogućnost otpada. Ipak hvala, shvatio sam da sve ozbiljnije stvari (počevši od ovog prostog COUNT(DISTINCT... ) pa do složenijih, treba preći na SQL Server.


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

Trtko
Koprivnica

Član broj: 69494
Poruke: 695
*.bilokalnik.hr.



+8 Profil

icon Re: Count(Distinct)... - problem!07.11.2006. u 09:30 - pre 212 meseci
A ovako


SELECT First(id_employee) AS PoljeID, Count(id_employee) AS Brojdana FROM Tabela WHERE Month(datumr)="10" GROUP BY id_employee HAVING Count(id_employee)>1


 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl.static.sezampro.yu.



+1 Profil

icon Re: Count(Distinct)... - problem!07.11.2006. u 11:28 - pre 212 meseci
Ne radi kako treba, to je identičan upit ovom:

Code:
SELECT (id_employee),  Count(*) AS Brojdana 
FROM tbllealiste 
WHERE month(datum)=10 
GROUP BY id_employee 


...
Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.eqao.com.



+79 Profil

icon Re: Count(Distinct)... - problem!07.11.2006. u 16:35 - pre 212 meseci
MS SQL ne bi pomogao bog zna sta. Sto dobijes na brzini izvrsavanja samog upita, izgubis na konektovanju ...
Ako je sporo, onda isu indeksi uradjeni kako treba. Ako je resenje sa nested query sporo, probaj sa dva kverija. Jedna kveri pronalazi sve radnike koji su se upisali u toku odredjenog dana bar jednom. Onda drugi kveri uradi GROUP BY po mesecu nad prvim kverijem. I nemoj da stavljas WHERE ni u jedan od ovih. sta ces kad se promeni mesec? WHERE ce da dodje negde u reportu, u DoCmd.Openreport.

Evo ti primer, dva kverija, koji daju ono sto ti treba.

Jedna dobronamerna primedba: primer koji si dao nema ni jedan slucaj gde se jedan radnik upisao vise od jednom u toku jednog dana. Ljudi koji su ti pomagali to nisu znali i zato ni jedno resenje ne radi. Drugi put pokusaj da napravis primer koji pokriva sve bitne slucajeve i naznaci taj uslov na pocetku.

:-)
Prikačeni fajlovi
 
Odgovor na temu

mika
NBG-ML

Član broj: 55
Poruke: 640
*.adsl.static.sezampro.yu.



+1 Profil

icon Re: Count(Distinct)... - problem!08.11.2006. u 07:49 - pre 212 meseci
Citat:
Jedna dobronamerna primedba: primer koji si dao nema ni jedan slucaj gde se jedan radnik upisao vise od jednom u toku jednog dana. Ljudi koji su ti pomagali to nisu znali i zato ni jedno resenje ne radi. Drugi put pokusaj da napravis primer koji pokriva sve bitne slucajeve i naznaci taj uslov na pocetku.


Tačno, i to sam uvideo tek tada kada sam juče postovao, u pravu si, 10x.

WHERE klauzula, tu sam je ostavio bezveze, nema potrebe da stoji.

Ja sam mislio, na SELECT COUNT(DISTINCT... varijantu, koju podržava MS SQL-server, i sve njegove naprednije opcije koje uz njega idu...


Bolje 100 godina biti milioner nego nedelju dana siromašak
(c) Alan ford
 
Odgovor na temu

[es] :: Access :: Count(Distinct)... - problem!

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

Postavi temu Odgovori

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