SELECT com função de GRUPO

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
  

Mensagemem Qui, 16 Fev 2006 3:29 pm

Galera, boa tarde preciso fazer um select que me traga a seguinte tabela.
Nesta consulta, forneco uma data especifica para dt_criacao. Então TOT_DIA será o numero de contas criadas em dt_criacao, TOT_MES será o número de contas criada dentro do mês de dt_criacao e consequentemente TOT_ANO será o número de contas criadas dentro do ano que é fornecido em dt_criacao, ou seja :
dt_criacao = 20051206, logo mês =12 e ano = 2005
Código: Selecionar todos
PRODUTO      TOT_DIA        TOT_MES       TOT_ANO
   4           125            500           1200
   5             0            300            950
   6            50             50             50



Para isto utilizo uma única tabela chamada CONTAS com os campos dt_criacao e produto.

Para o TOT_DIA consigo fazer o select , mas para trazer os TOT_MES e TOT_ANO, respectivamente por produto não estou conseguindo fazer. alguém poderia me dar um help ?!!

Para trazer as duas primeras colunas o select fica :
Código: Selecionar todos
select produto, count(dt_criacao)
from contas
where dt_criacao = "20051206"
group by produto



Alguém poderia me dar um help ?!!

Até mais e obrigado !!
Jedi
Localização: São Paulo

Jedi

Mensagemem Qui, 16 Fev 2006 4:05 pm

Fiz um exemplo com SCOTT. Dá uma olhada:

Código: Selecionar todos
SQL> select deptno, hiredate
  2  from emp
  3  where to_char(hiredate, 'yyyy') = 1981
  4  order by 1,2
  5  /

    DEPTNO HIREDATE
---------- ---------
        10 09-JUN-81
        10 17-NOV-81
        20 02-APR-81
        20 03-DEC-81
        30 20-FEB-81
        30 22-FEB-81
        30 01-MAY-81
        30 08-SEP-81
        30 28-SEP-81
        30 03-DEC-81

10 rows selected.


Agora, vamos somar do jeito que você precisa:
Código: Selecionar todos
SQL> select a.dep, b.qtd_dia, c.qtd_mes, d.qtd_ano
  2  from
  3    (select distinct deptno dep
  4     from emp
  5    ) a
  6  , (select deptno, count(1) qtd_dia
  7     from emp
  8     where to_char(hiredate,'dd/mm/yyyy')  = '20/02/1981' group by deptno)   b
  9  , (select deptno, count(1) qtd_mes
10     from emp
11     where to_char(hiredate,'mm/yyyy')     = '02/1981'    group by deptno)   c
12  , (select deptno, count(1) qtd_ano
13     from emp
14     where to_char(hiredate,'yyyy')        = '1981'       group by deptno)   d
15  where a.dep=b.deptno(+)
16    and a.dep=c.deptno(+)
17    and a.dep=d.deptno(+)
18  /

       DEP    QTD_DIA    QTD_MES    QTD_ANO
---------- ---------- ---------- ----------
        10                                2
        20                                2
        30          1          2          6

SQL>


:-o
dr_gori
Localização: Portland, OR USA

Thomas F. G

Você já respondeu a dúvida de alguém hoje?
http://glufke.net/oracle/search.php?search_id=unanswered



Voltar para SQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes