MSSQL vs MYSQL GROUP BY

Problem:

Kod MySql-a koristeći GROUP BY funkciju možemo selektirati neka dodatna polja uz ono polje po kojem grupiramo.

npr.


SELECT  ime, prezime, grad FROM tbl_adresar GROUP BY grad

Dobit ćemo rezultate grupirane po polju grad, ali i jedno od imena i prezimena koje stoje uz neki od tih rezultata.

Ako isto pokušamo napraviti u MSSQL dobit ćemo ovakav error:


Column 'tbl_adresar.ime' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Ako bi query preradili na gore sugerirani način:


SELECT  ime, prezime, grad FROM tbl_adresar GROUP BY grad, ime, prezime

Nebi dobili grešku, ali ni rezultat kakav očekujemo jer nas ne zanima grupiranje po imenu nego samo po gradu.

Rješenje:

Upotreba neke od MSSQL aggregate funkcije kod polja koja nisu grupirana.

min() bi možda moglo biti dobro rješenje.


SELECT  min(ime), min( prezime),  grad FROM tbl_adresar GROUP BY grad

Rezultat je sličan rezultatu dobivenom kod MySQL-a.

Grupirano po gradu, ali ispisuje i jedno ime i prezime koje u navedenu grupu pripada.

 


Leave a Reply

You must be logged in to post a comment.