Com o uso das funções de agrupamento, é possível obter resultados a partir de várias linhas de uma tabela, organizadas de acordo com algum critério. Esse tipo de consulta é útil para extrair resumos ou análises.


Cláusula group by

A cláusula group by agrupa dados de acordo com uma coluna especificada e executa funções de agregação sobre esses grupos.

Exemplo: calcular o total de ingressos comprados por cada usuário (a partir da tabela ingresso_compra):

select fk_id_compra as id_compra, sum(quantidade) as total_ingressos
from ingresso_compra
group by fk_id_compra;

Cláusula having

A cláusula having permite aplicar filtros após o agrupamento, para que apenas grupos que atendem a uma condição sejam incluídos no resultado.

Exemplo: listar o total de ingressos comprados por cada compra, mas somente para compras em que o total seja superior a 2 ingressos:

select fk_id_compra as id_compra, sum(quantidade) as total_ingressos
from ingresso_compra
group by fk_id_compra
having sum(quantidade) > 2;

Cláusula distinct

A cláusula distinct elimina respostas duplicadas, mostrando cada valor único apenas uma vez.

Exemplo: listar os tipos únicos de ingresso disponíveis na tabela ingresso:

select distinct tipo from ingresso;

Operador union

O operador union combina resultados de duas consultas select. É necessário que as consultas tenham o mesmo número de colunas para que a união ocorra corretamente.

Nota: Para incluir todos os resultados, inclusive duplicados, utilize union all.

No contexto do sistema de vendas de ingressos online (VIO), o operador union pode ser útil em alguns cenários onde é preciso combinar informações de diferentes tabelas para criar relatórios ou análises, especialmente quando essas informações têm algo em comum, como campos de identificação ou atributos que façam sentido serem listados juntos.

Aqui estão alguns exemplos práticos de como o union poderia ser útil no VIO:

1. Listagem Geral de Pessoas e Entidades Envolvidas