Agrupar por cláusula en mySQL y postgreSQL, ¿por qué el error en postgreSQL?

Supongamos que tengo esta tabla: named =la mesa cuya estructura es:

postgreSQL:

 create table the_table (col3 SERIAL, col2 varchar, col1 varchar, PRIMARY KEY(col3));

MySQL:

create table the_table ( col3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY, col2 varchar(20), col1 varchar(20) )

Luego inserté la tabla:

INSERT INTO the_table (col2,col1) VALUES 
('x','a'),
('x','b'),
('y','c'),
('y','d'),
('z','e'),
('z','f');

Ahora la tabla se ve así:

col3 | col2 | col1 
------+------+------
    1 | x    | a
    2 | x    | b
    3 | y    | c
    4 | y    | d
    5 | z    | e
    6 | z    | f

Cuando hago esta consulta:

select * from the_table group by col2

entonces en mysql obtengo:

1 x a
3 y c
5 z e

y en postgreSQL, recibo un error:

ERROR:  column "the_table.col3" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: select * from the_table group by col2;

Mis preguntas:

¿Qué significa este error? ¿Qué es la función agregada?

Cuando funciona en MySQL, ¿por qué no puede funcionar en postgreSQL?

Respuestas a la pregunta(3)

Su respuesta a la pregunta