[ saladinche @ 21.12.2017. 12:51 ] @
Pozdrav svima, imam sledeci slučaj:
U bazi mi se svakog dana ponavljaju radnici koji su obavili svoj zadatak.
Broj naloga na dnevnom nivou je od 1 do 50.... i onda imam polje "Datum, Radnik, Zarada" pa sledeći red je opet "Datum, Radnik, Zarada" i tako redom.

Sada hoću da izračunam koliko je radnik imao radnih dana između 01.11.2017 i 31.11.2017 po principu da mi proveri da il za datog radnika postoji neki zapis za svaki datum i tako računa.
Hvala u napred.
[ bogdan.kecman @ 21.12.2017. 13:07 ] @
SELECT Radnik, COUNT(*) FROM tabela WHERE Datum BETWEEN '2017-11-1' AND
'2017-11-31' GROUP BY Radnik;

si to hteo?
[ saladinche @ 21.12.2017. 13:19 ] @
Nou,.
Kao rezultat, ovo mi daje radnika i koliko je radnih naloga imao svakog dana.

Meni treba samo da mi izbroji datume u kojima se pojavljuje dati radnik.
[ bogdan.kecman @ 21.12.2017. 13:24 ] @
mozes da imas vise radnih naloga po danu za istog coveka?

oces tako za sve radnike ili samo za jednog ranika?
[ saladinche @ 21.12.2017. 13:25 ] @
Trebaji mi obe informacije, ali mi je proritetnija ova za svakog posebno.
[ bogdan.kecman @ 21.12.2017. 15:12 ] @
ovo ?

Code:

mysql> select * from t2;
+--------+---------------------+--------+
| radnik | datum               | zarada |
+--------+---------------------+--------+
|      1 | 2017-11-02 10:10:10 |      0 |
|      1 | 2017-11-02 10:11:10 |      0 |
|      1 | 2017-11-02 10:13:10 |      0 |
|      1 | 2017-11-02 14:13:10 |      0 |
|      1 | 2017-11-02 15:13:10 |      0 |
|      1 | 2017-11-02 16:13:10 |      0 |
|      1 | 2017-11-03 16:13:10 |      0 |
|      1 | 2017-11-04 16:13:10 |      0 |
|      1 | 2017-11-04 16:15:10 |      0 |
|      2 | 2017-11-04 16:15:10 |      0 |
|      3 | 2017-11-04 16:15:10 |      0 |
|      4 | 2017-11-04 16:15:10 |      0 |
|      5 | 2017-11-05 16:15:10 |      0 |
|      6 | 2017-11-06 16:15:10 |      0 |
|      7 | 2017-11-07 16:15:10 |      0 |
|      7 | 2017-11-07 16:16:10 |      0 |
+--------+---------------------+--------+
16 rows in set (0.00 sec)

mysql> select count(distinct(date(datum))) from t2 where radnik=1;
+------------------------------+
| count(distinct(date(datum))) |
+------------------------------+
|                            3 |
+------------------------------+
1 row in set (0.00 sec)

mysql> select radnik, count(distinct(date(datum))) from t2 group by radnik;
+--------+------------------------------+
| radnik | count(distinct(date(datum))) |
+--------+------------------------------+
|      1 |                            3 |
|      2 |                            1 |
|      3 |                            1 |
|      4 |                            1 |
|      5 |                            1 |
|      6 |                            1 |
|      7 |                            1 |
+--------+------------------------------+
7 rows in set (0.00 sec)

mysql>


[ bogdan.kecman @ 21.12.2017. 15:17 ] @
za testiranje

Code:

CREATE TABLE `t2` (
  `radnik` int(11) DEFAULT NULL,
  `datum` datetime DEFAULT NULL,
  `zarada` int(11) DEFAULT NULL
) ENGINE=InnoDB;

INSERT INTO `t2` VALUES (1,'2017-11-02 10:10:10',0),(1,'2017-11-02 10:11:10',0),(1,'2017-11-02 10:13:10',0),(1,'2017-11-02 14:13:10',0),(1,'2017-11-02 15:13:10',0),(1,'2017-11-02 16:13:10',0),(1,'2017-11-03 16:13:10',0),(1,'2017-11-04 16:13:10',0),(1,'2017-11-04 16:15:10',0),(2,'2017-11-04 16:15:10',0),(3,'2017-11-04 16:15:10',0),(4,'2017-11-04 16:15:10',0),(5,'2017-11-05 16:15:10',0),(6,'2017-11-06 16:15:10',0),(7,'2017-11-07 16:15:10',0),(7,'2017-11-07 16:16:10',0);

select count(distinct(date(datum))) from t2 where radnik=1;
select radnik, count(distinct(date(datum))) from t2 group by radnik;



[ saladinche @ 22.12.2017. 10:33 ] @
Nije htelo baš ovako ali evo kako sam došao do rešenja:

SELECT radnik, COUNT ( DISTINCT datum ) AS "Broj radnih dana"
from t2
where radnik = :radnik and datum between :datum1 and :datum2
group by radnik

Hvala puno na pomoci.
[ bogdan.kecman @ 22.12.2017. 11:10 ] @
tako ce da ti radi ako ti je datum "date" polje, ako ti je datum "datetime" polje (kao kod mene, valjda pamtis kad je neko nesto radio ne samo koji dan?) onda ti ne treba date() ostalo je koliko vidim isto :D
[ jablan @ 22.12.2017. 13:13 ] @
u 100 marke da mu datum nije datetime nego varchar sa custom date formatom ;)
[ saladinche @ 22.12.2017. 14:48 ] @
Citat:
bogdan.kecman: tako ce da ti radi ako ti je datum "date" polje, ako ti je datum "datetime" polje (kao kod mene, valjda pamtis kad je neko nesto radio ne samo koji dan?) onda ti ne treba date() ostalo je koliko vidim isto :D


U Pravu si, polje datum je tipa "date" i nije htelo onako da radi. Onda sam krenuo da menjam i proradilo je sa ovim.