Agrupar os dados de uma consulta é fundamental para elaborar relatórios.
Exemplo para usar GROUP BY:
SELECT TABLE_NAME,OWNER,TABLESPACE_NAME FROM ALL_TABLES GROUP BY OWNER,TABLESPACE_NAME,TABLE_NAME
Nesta query trazemos 3 campos da tabela ALL_TABLES e ordenamos primeiramente pelo dono das tabelas.
Observe que todas as colunas solicitadas pelo SELECT estão no GROUP BY. Esta é uma das exigências da funcionalidade. Apenas as colunas com FUNÇÕES DE GRUPO não precisam ( podem? ) ser inseridas no GROUP BY statement.
Digamos que voce queira contar quantas tabelas cada usuário tem no seu sistema:
SELECT OWNER,COUNT(TABLE_NAME) FROM ALL_TABLES GROUP BY OWNER
na query acima selecionamos todos os owners e os agrupamos, após agrupar aplicamos o count em todas as tabelas que possuem o determinado owner. ( é mais ou menos assim que funciona 🙂 ).
Ahhh esqueci de falar GROUP BY NÃO ACEITA ALIAS!
Então se vc usar ALIAS nas suas colunas então deverá usar o nome da coluna no group by:
SELECT OWNER dono,COUNT(TABLE_NAME) FROM ALL_TABLES GROUP BY OWNER
Então lembre-se, no GROUP BY voce deve sempre informar todos os campos que não estejam em funções de grupo e sem usar ALIAS!