Tenho duas ou mais tabelas diferentes por estrutura e quero comparar seus números de linhas, o que obtenho com a consulta de contagem de estrelas:
select count(*) from table_a
Para duas tabelas gostaria de ver a diferença das consultas count-star-, por exemplo. Se essa diferença for 0, as tabelas terão o mesmo número de linhas.
Para mais tabelas, você pode calcular uma média das consultas de contagem de estrelas (ou algo mais significativo do que a média, depende de você) e comparar as únicas contagens de estrelas com esse valor. O ponto principal é que, se todas as N tabelas tiverem o mesmo tamanho, tenho como resultado N colunas (ou linhas) preenchidas com 0's. Se as tabelas não tiverem o mesmo número de linhas, então em cada uma das N colunas (ou linhas) espero ver a diferença do número de linhas de uma determinada tabela e a média (ou algo mais significativo, cf. acima) .
Estou com esse problema em um banco de dados Oracle, mas posso precisar dessa consulta no PostgreSQL no futuro, provavelmente iremos migrar.
Quanto mais eficiente for a consulta, mais bacana, claro. Por favor, comente sobre isso também, se quiser.
Uma subconsulta com
UNION ALL
e a função de agregaçãoavg()
usada como função de agregação de janela deve fazer o truque:SQL Fiddle.