Olá pessoal, bom dia.
Estou tendo um pequeno problema com a linguagem SQL e talvez vocês possam me dar uma luz. ^^

Vamos lá. Eu tenho 3 tabelas distintas em um projeto da faculdade e preciso gerar relatórios gerenciais a partir delas. As tabelas em questão são:

Consultas
CREATE TABLE CONSULTAS (
CON_CODIGO INTEGER NOT NULL,
CON_DATA DATE,
CON_HORA TIME,
PAC_CODIGO INTEGER NOT NULL,
CRM_MEDICO INTEGER NOT NULL,
HIS_CODIGO INTEGER NOT NULL,
CON_ESTADO CHAR(3) CHARACTER SET NONE
);

Médicos
CREATE TABLE MEDICOS (
CRM_MEDICO INTEGER NOT NULL,
MED_NOME VARCHAR(30) CHARACTER SET NONE,
MED_ENDERECO VARCHAR(30) CHARACTER SET NONE,
MED_BAIRRO VARCHAR(15) CHARACTER SET NONE,
MED_CIDADE VARCHAR(15) CHARACTER SET NONE,
MED_ESTADO CHAR(2) CHARACTER SET NONE,
MED_TELEFONE CHAR(10) CHARACTER SET NONE,
MED_CEP CHAR(8) CHARACTER SET NONE,
ESP_CODIGO INTEGER NOT NULL
);

Especialidades
CREATE TABLE ESPECIALIDADES (
ESP_CODIGO INTEGER NOT NULL,
ESP_NOME VARCHAR(50) CHARACTER SET NONE NOT NULL,
ESP_PRECO NUMERIC(10,2) NOT NULL
);

Bom, por algum motivo eu não estou conseguindo realizar qualquer tipo de função de agrupamento (max, avg, etc) quando realizo o join entre as tabelas.

O select que estou executando é:

Código :
select med.med_nome, esp.esp_nome,
avg(con.con_codigo), count(con.con_codigo) from
medicos med, especialidades esp, consultas con
where con.crm_medico = med.crm_medico and
med.esp_codigo = esp.esp_codigo
group by esp.esp_nome

Quando retiro as funções de agrupamento e o group by funciona, mas não exibe as informações que preciso. Estou precisando criar um relatório que exiba pra mim o nome do médico, a especialidade dele, a quantidade média de atendimentos dele e o total de atendimentos entre um período de tempo (ai utilizaria a cláusula between, certo?).

O erro que ele exibe é:
Código :
Invalid token.
Dynamic SQL Error.
SQL error code = -104.
Invalid expression in the select list (not contained in either an aggregate function or the GROUP BY clause).

Alguém sabe o que pode ser?
Valeu galera.