Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.software.database > #2969

Re: [OT] Esperti di query SQL (Oracle)

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

[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