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!