malo je nejasno covek napisao sta hoce pa ja sad nagadjam sta mu je cilj, ono kako je napisao to mu dodje taj moj upit eventualno umesto HAVING SUM(flag) = 0; da stavi HAVING SUM(ABS(flag)) = 0; ako ima i negativne vrednosti da upit uvek bude validan ..
MAX(rj) je zbog SQL standarda, ne mozes da imas u select spisku vrednost koja nije jednoznacna, posto u tom upitu imas GROUP BY id to znaci da jedino ID ima jednoznacnu vrednost i naravno rezultati agregacionih funkcija ali RJ ne moze da bude jednoznacan, to sto u njegovom slucaju jeste je zato sto je tako ubacio datu ali mogao je da upise datu i drugacije ... primer, da je umesto
(1,1,0), (1,1,0), (1,2,0), (1,3,0), (1,3,1), (1,4,1), (2,1,0);
imao
(5,1,0), (1,1,0), (1,2,0), (1,3,0), (1,3,1), (1,4,1), (2,1,0);
koji RJ u tom slucaju treba da mu vratis za id 1? 5 ili 1, stare verzije mysql-a ne postuju standard po tom pitanju i vratice ti nekad 5 nekad 1 (nikad ne znas koji) ali nece prijaviti gresku, novi mysql po defaultu vraca gresku da je upit nevalidan ... te posto je njemu ocigledno svejedno koji RJ ce da vrati ja sam stavio MAX() da bi imao validan upit, moze da bude i min i avg i sta god vec mu treba .... dodatno sto mysql ne podrzava windowed funkcije ali da ne idemo sad na tu stranu....
e sad, sve to ako sam ja skontao sta je orome hteo posto mu simplifikacija problema nije bila bas 100% uspesna :D nadam se da ce uspeti da iskoristi odgovore, ako ne, morace da da malo tacniji opis problema da bi dobio i tacniji odgovor