sql >> Database teknologi >  >> RDS >> Oracle

Gruppering af data i forskellige tabeller baseret på minimumsdatoen for en begivenhed

Ved at bruge en MIN som analytisk funktion kan du beregne den frugt, der bør overvejes for en kunde.

Da rækkefølgen ikke er alfabetisk, skal du hjælpe med en DECODE

Resten er en simpel gruppe med en MIN for købsdatoen, men kun med tanke på indkøb med MIN frugten.

with cust as (
select CUST_ID, PURCH_DATE, FRUIT,
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)) over (partition by cust_id),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab)
select CUST_ID,min_fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from cust
group by CUST_ID,min_fruit
order by 1,2

Bellow er en alternativ løsning uden at bruge analytiske funktioner .

Den første underforespørgsel beregner minimal frugt med en silpme group by bruger den samme DECODE logik.

Du skal slutte underforespørgslen til den originale tabel, som er præcis, hvad du kan gemme ved hjælp af analytiske funktioner.

with min_fruit as (
select CUST_ID, 
decode(min(decode(FRUIT,'Apple',1,'Orange',2,'Banana',3)),
       1,'Apple',2,'Orange',3,'Banana') as min_fruit       
from tab
group by cust_id)
select cust.CUST_ID,min_fruit fruit,
       min(case when FRUIT = MIN_FRUIT then PURCH_DATE end) min_purch_date
from tab cust
join min_fruit on cust.cust_id = min_fruit.cust_id
group by cust.CUST_ID,min_fruit
order by 1,2;

Med dine prøvedata returnerer dette

   CUST_ID FRUIT  MIN_PURCH_DATE     
---------- ------ -------------------
     10001 Apple  12.01.2019 00:00:00
     10002 Apple  21.01.2019 00:00:00
     10003 Apple  06.02.2019 00:00:00


  1. Hvordan kan jeg automatisk oprette en e-mailadresse til mine hjemmesidemedlemmer?

  2. WAMP Virtual Host virker ikke

  3. iOS - Best Practices for Core Data and Server Database Synchronization

  4. Hvorfor får jeg denne SQLSyntaxErrorException:ORA-00933:SQL-kommando blev ikke afsluttet korrekt, når jeg forsøger at udføre denne JDBC-forespørgsel?