Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.software.database > #2969
| Newsgroups | it.comp.software.database |
|---|---|
| Date | 2015-10-21 04:24 -0700 |
| References | <a80ecfaf-2427-4345-a0ef-0cf66728d597@googlegroups.com> <30df0782-a15b-4cc2-bad0-ea04bac9e5ec@googlegroups.com> <f9889a27-6ccf-45fa-a99f-3633f5d69124@googlegroups.com> <1c85da2e-cded-4bb8-9033-8e6d03cb71ac@googlegroups.com> |
| Message-ID | <2ebc4577-4e88-45d0-9ee8-66fe07397466@googlegroups.com> (permalink) |
| Subject | Re: [OT] Esperti di query SQL (Oracle) |
| From | Claudio Cioletti <ciole7@gmail.com> |
Il giorno martedì 20 ottobre 2015 18:13:38 UTC+2, Giacomo Degli Esposti ha scritto:
> On Tuesday, October 20, 2015 at 5:30:07 PM UTC+2, Claudio Cioletti wrote:
> > I dati sono su una tabella fatta come ti descrivo sotto.
> > La richiesta era di fare una singola query
> > che tirasse fuori solo i "range" di date
> > APERTURA - CHIUSURA non compresi in altri "range"
> > ordinando per SERVIZIO e APERTURA...
> >
> > 1) SERVICE_01 19/01/2015 12:12:27 05/03/2015 15:57:22
> > 2) SERVICE_01 21/01/2015 15:43:40 29/01/2015 13:07:35
> > 3) SERVICE_01 12/02/2015 11:58:58 13/02/2015 17:05:20
> > 4) SERVICE_01 24/03/2015 14:40:12 24/03/2015 18:38:36
> >
> > Per esempio i record 2 e 3 sono "compresi" nel 1
> > mentre il record 4 no; quindi il risultato dovrebbe
> > essere:
> > 1) SERVICE_01 19/01/2015 12:12:27 05/03/2015 15:57:22
> > 2) SERVICE_01 24/03/2015 14:40:12 24/03/2015 18:38:36
>
> Ahhhhh, detto cosi' e' molto piu' chiaro! :)
>
> > Alla fine ce l'ho fatta, ma se volete provarci voi ecco i dati:
> >
> > CREATE TABLE TEST_RANGE_DATE
> > (SERVICE VARCHAR2(10),
> > APERTURA DATE ,
> > CHIUSURA DATE );
> > --
> > insert into TEST_RANGE_DATE values('SERVICE_01',to_date('03/04/2015 15:31:48','DD/MM/YYYY HH24:MI:SS'),to_date('03/04/2015 16:08:02','DD/MM/YYYY HH24:MI:SS'));
> [...]
>
> Hai usato qualcosa del genere?
>
> select L.* from TEST_RANGE_DATE L
> where not EXISTS
> (select 1 from TEST_RANGE_DATE R where R.Apertura <= L.apertura
> AND R.chiusura >= L.chiusura )
>
> ciao
> Giacomo
No, come dici te non tira fuori nulla!
E' un po più complessa:
select SERVICE ,
NEXT_APER INIZIO,
nvl(LEAD(MAX_CHIU) OVER(PARTITION BY SERVICE
ORDER BY SERVICE, APERTURA),CHIUSURA) FINE
from (
select SERVICE ,
APERTURA ,
CHIUSURA ,
MIN_APER ,
nvl(MAX_CHIU,CHIUSURA) MAX_CHIU ,
CASE WHEN APERTURA > MAX_CHIU THEN APERTURA ELSE MIN_APER END NEXT_APER
from (
select SERVICE ,
APERTURA ,
CHIUSURA ,
min(APERTURA) OVER(PARTITION BY SERVICE ORDER BY SERVICE, APERTURA ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) MIN_APER,
max(CHIUSURA) OVER(PARTITION BY SERVICE ORDER BY SERVICE, APERTURA ROWS BETWEEN UNBOUNDED PRECEDING AND 1 PRECEDING) MAX_CHIU
from (
select SERVICE, APERTURA, CHIUSURA
from TEST_RANGE_DATE
order by 1,2,3
)
)
)
where NEXT_APER > MIN_APER
or APERTURA = MIN_APER
order by 1,2,3;
Back to it.comp.software.database | Previous | Next — Previous in thread | Next in thread | Find similar
[OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-14 01:54 -0700
Re: [OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-15 03:07 -0700
Re: [OT] Esperti di query SQL (Oracle) Giacomo Degli Esposti <giacomo.degliesposti@gmail.com> - 2015-10-15 07:42 -0700
Re: [OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-20 08:30 -0700
Re: [OT] Esperti di query SQL (Oracle) Giacomo Degli Esposti <giacomo.degliesposti@gmail.com> - 2015-10-20 09:13 -0700
Re: [OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-21 04:24 -0700
Re: [OT] Esperti di query SQL (Oracle) Giacomo Degli Esposti <giacomo.degliesposti@gmail.com> - 2015-10-21 06:01 -0700
Re: [OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-21 06:42 -0700
Re: [OT] Esperti di query SQL (Oracle) Giacomo Degli Esposti <giacomo.degliesposti@gmail.com> - 2015-10-21 06:56 -0700
Re: [OT] Esperti di query SQL (Oracle) Claudio Cioletti <ciole7@gmail.com> - 2015-10-21 07:48 -0700
csiph-web