SELECT
UPPER(H.tipo) AS Tipo_Hospedagem,
COUNT(H.hospedagem_id) AS Total_Hospedagens,
ROUND(AVG(A.nota), 2) AS Media_Geral_Nota
FROM
Hospedagens AS H
LEFT JOIN
Avaliacoes AS A ON H.hospedagem_id = A.hospedagem_id
GROUP BY
UPPER(H.tipo)
ORDER BY
Media_Geral_Nota DESC;
SELECT
CASE
WHEN LENGTH(A.comentario) <= 50 THEN 'Curto (Detalhe Mínimo)'
WHEN LENGTH(A.comentario) <= 150 THEN 'Médio (Feedback Padrão)'
ELSE 'Longo (Feedback Detalhado)'
END AS Categoria_Comentario,
COUNT(A.avaliacao_id) AS Total_Comentarios,
ROUND(AVG(A.nota), 2) AS Media_Nota_Categoria
FROM
Avaliacoes AS A
WHERE
A.comentario IS NOT NULL
GROUP BY
Categoria_Comentario
ORDER BY
Total_Comentarios DESC;
Funções Utilizadas: CASE, LENGTH() (ou LEN() em SQL Server, ou CHAR_LENGTH() em MySQL/PostgreSQL), COUNT(), AVG(), ROUND().