Como descobrir o maior vendedor

Prezados, como faço pra descobrir qual funcionário realizou o maior numero de vendas em um determinado mês?
Segue as estruturas das minhas tabela

TABELA VENDA
| id | bigint(20) | horario | datetime | valor_total | decimal(7,2) | id_funcionario | bigint(20) | id_cliente | bigint(20)
TABELA FUNCIONÁRIO

| id | bigint(20)
| data_admissao | date
| data_nascimento | date
| id_pessoa | bigint(20)

Até o presente momento tenho a seguinte query :
select *from funcionario join venda on funcionario.id = venda.id_funcionario and funcionario.id = (aqui dentro vem a sub query que traz o maior vendedor) limit 1;_

O problema é essa sub query!

Não sei muito de banco de dados, mas primeiro eu criaria uma busca agrupando e depois juntaria as tabelas:

Contando e agrupando as vendas

SELECT id_funcionario COUNT(*) AS "vendas" FROM VENDA GROUP BY id_funcionario ORDER BY COUNT(*) DESC

Juntando as tabelas:

SELECT * FROM funcionario JOIN (SELECT id_funcionario COUNT(*) AS "vendas" FROM VENDA GROUP BY id_funcionario) AS tb_vendas ON funcionario.id = tb_vendas.id_funcionario ORDER BY vendas DESC limit 1


acho que esta tabela venda, esta mal estruturada. [quote=“programador1225, post:1, topic:358738”]
| id | bigint(20)
| horario | datetime
| valor_total | decimal(7,2)
| id_funcionario | bigint(20)
| id_cliente | bigint(20)
[/quote]

talvez esteja faltado ai o valor de cada venda, desta forma ao inserir uma venda , vai inserir junto o valor da venda em si, ai é só fazer um select para todas as vendas de um determinado vendedor, e no final somar o valor de cada uma. se quiser saber o total de vendas, nesta tabela vendas mesmo, coloque ai uma coluna ex numero_de_venda, a cada venda adiciona o numero da venda em si nesta coluna , depois é só fazer também um select count de todas colunas numero_de_venda de um determinado vendedor X.