Dia da semana (date)

Dúvidas, dicas e truques de PL/SQL. Aqui também vão assuntos relacionados a pacotes, triggers, funções, Java-Stored Procedures, etc
Responder
kalas
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 06 Jan 2010 10:13 pm
Localização: Castelo Branco

Boa noite a todos!

Estou a elaborar um trabalho para a faculdade e estou com um pequeno problema que me impede de concluir o referido trabalho.

Tenho uma tabela onde estão dados referentes a visitas a um imóvel que determinada empresa de venda de imóveis realizou. Entre os diversos campos da dita tabela, há um em particular que me interessa para este pequeno problema. O campo em questão diz respeito à data em que se realizou a visita. O campo é do tipo date no formato dd-mm-yyyy.

Eu preciso de fazer um procedimento q me diga qual o dia da semana em que se realizaram mais visitas. Facilmente consigo saber o dia com a função to_char('data','DAY'). O meu problema está em não conseguir estruturar um procedimento que no fim tenha a contagem total das visitas para cada dia da semana.

Já tentei com if... elsif... else em que cada cada if era responsável por verificar qual o dia da semana e incrementar +1 a uma variável que indicava determinado dia.

Ideias? É um trabalho longo e apenas me falta implementar isto.
Avatar do usuário
fsitja
Rank: OraSauro
Rank: OraSauro
Mensagens: 611
Registrado em: Seg, 19 Jan 2009 4:29 pm
Localização: Gaúcho no Rio de Janeiro - RJ
"The scars exist to remind us that the past was real"
Campanha: Como fazer uma pergunta e obter uma resposta.
http://tkyte.blogspot.com/2005/06/how-t ... tions.html

OCA & OCP Developer — OCE SQL Expert — OCS Data Warehousing Specialist

Bom, primeira coisa. Se o campo é date ele não possui um formato. O formato é uma configuração de sessão apenas para visualização, pois a data é um formato interno de representação.

Mas voltando ao tópico, o que você vai precisar fazer para contar os dias da semana é agrupar pelo dia, no group by, e fazer o count(*) normalmente.

Exemplo usando a view do dicionário de dados ALL_TABLES.

Selecionar tudo

SQL> SELECT to_char(t.last_analyzed, 'DAY') dia_semana, COUNT(*) contador
  2    FROM all_tables t
  3   GROUP BY to_char(t.last_analyzed, 'DAY')
  4   ORDER BY contador DESC
  5  /

DIA_SEMANA      CONTADOR
------------- ----------
QUINTA-FEIRA        1789
QUARTA-FEIRA         372
TERÇA-FEIRA          187
                     131
SEGUNDA-FEIRA         48
SEXTA-FEIRA            7
DOMINGO                7
SÁBADO                 2

8 rows selected

SQL> 
kalas
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 2
Registrado em: Qua, 06 Jan 2010 10:13 pm
Localização: Castelo Branco

fsitja muito obrigado pela ajuda. Era mesmo disso que estava a precisar, como tal fico muito agradecido.
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 0 visitante