Questo esempio aiuterà:
create table d1
(event_date date, event_description varchar2(100));
insert into d1 values (sysdate,'Phone Call');
insert into d1 values (sysdate,'Letter');
insert into d1 values (sysdate-50,'Interview');
insert into d1 values (sysdate-50,'Dinner with parents');
insert into d1 values (sysdate-100,'Birthday');
insert into d1 values (sysdate-100,'Holiday');
insert into d1 values (sysdate-100,'Interview');
insert into d1 values (sysdate-100,'Phone Call');
commit;
select * from d1;
EVENT_DATE EVENT_DESCRIPTION
------------------------- -----------------------------------------------
04-MAR-10 14.47.58 Phone Call
04-MAR-10 14.47.58 Letter
13-JAN-10 14.47.58 Interview
13-JAN-10 14.47.58 Dinner with parents
24-NOV-09 14.47.58 Birthday
24-NOV-09 14.47.58 Holiday
24-NOV-09 14.47.58 Interview
24-NOV-09 14.47.58 Phone Call
8 rows selected
Si può vedere che nov-09 è l'unico mese che più di 3 eventi.
Facendo riferimento alla domanda originale, che era E restituire se per un mese, il conteggio somma più di 3. Il seguente aggregato SQL funzionerà.
select trunc(event_date,'MONTH'),count('x') from d1
having count('x') > 3 group by trunc(event_date,'MONTH')
In alternativa, utilizzare TO_CHAR per convertire il tipo Date a un Char con una foto MON-YYYY come segue:
select to_char(trunc(event_date,'MONTH'),'MON-YYYY') month,
count('x') no_of_occurances from d1 having count('x') > 3 group trunc(event_date,'MONTH')
fonte
2010-03-04 14:59:43
In te esempio Presumo si intende settembre e non novembre. Puoi mostrarci un esempio dell'output che vorresti vedere? – orandov
L'output deve essere il conteggio e idealmente il mese. Ad esempio, (AGOSTO 14) se ci sono 14 record per agosto dello stesso anno. Ovviamente. – Sheldon
Per favore aggiungi il tag 'oracle' alla tua domanda :-D – bic