Resolvi começar com um objetivo bem simples: criar um gráfico de barras. Comecei com duas consultas: um de 100 linhas para representar porcentagens e outra com os valores que quero mostrar.
A de porcentagens é simples:
select rownum as pct
from usuarios
where rownum<100
E a de dados deve retornar apenas uma linha. A consulta abaixo compara o número de usuários que têm senha com os que ainda não têm:
select sum(case when senha is null then 1 else 0 end) as coluna1,
sum(case when senha is not null then 1 else 0 end) as coluna2
from usuarios
Para fazer um gráfico de barras, só preciso juntar as duas. Posso fazer um cross-join, porque uma delas só tem uma linha mesmo. No exemplo abaixo, reduzi o número de linhas para 10:
select pct,
(case when coluna1/(coluna1+coluna2)<pct then ' ' else '*' end),
(case when coluna2/(coluna1+coluna2)<pct then ' ' else '*' end)
from (
select sum(case when senha is null then 1 else 0 end) as coluna1,
sum(case when senha is not null then 1 else 0 end) as coluna2
from usuarios) dados,
(select rownum/10 as pct
from usuarios
where rownum<10) linhas
order by pct desc
E o resultado é:
0,9
0,8
0,7
0,6 *
0,5 *
0,4 *
0,3 * *
0,2 * *
0,1 * *
Só falta achar uma utilidade para isso!
Nenhum comentário:
Postar um comentário