Oie, Eduardo! Tudo bem?
Claro, vamos entender um pouco o que cada linha faz.
Na primeira linha, temos a seleção, usando o SELECT, do p.nome e renomeando eles como nome_proprietários. Continuando, é contado quantas hospedagens ativas cada um tem COUNT(h.hospedagem_id) e é dado o nome de total_hospedagens_ativas a essa contagem:
SELECT p.nome AS nome_proprietario, COUNT(h.hospedagem_id)
AS total_hospedagens_ativas
Em seguida, é indicado de qual tabela os dados vem, que é da proprietários e damos um apelido de p para essa tabela:
FROM proprietarios p
O JOIN usado no código é usado para unir a tabela proprietarios e a tabela hospedagens, que deve ser igual ao campo proprietario_id da tabela hospedagens (representada pelo apelido h). Ou seja, buscamos todas as hospedagens que têm o mesmo dono:
JOIN hospedagens h ON p.proprietario_id = h.proprietario_id
É aplicado um filtro usando o WHERE. Será filtrado as hospedagens que estão ativas quando o campo ativo for igual a 1:
WHERE h.ativo = 1
Depois, o resultado é agrupado pelo nome do proprietário para contar quantas hospedagens ativas cada um possui:
GROUP BY p.nome
É hora de ordenar as hospedagens ativas usando o ORDER BY e a ordenação vai ser decrescentedescrescente (do maior para o menor) usando o DES:
ORDER BY total_hospedagens_ativas DESC
E, por fim, é colocado um limite na consulta para retornar apenas 10 proprietários com a hospedagem ativa:
LIMIT 10
Para expandir os seus conhecimentos recomendo a leitura dos artigos:
Espero ter ajudado.
Boa leitura e estudos, Eduardo!