operazione di somma eseguita su righe fino al valore specificato: una nuova riga per ogni gruppo per il quale la somma supera il valore specificato

CREATE TABLE TEMP(RESOURCE_VALUE VARCHAR2(63 BYTE),TOT_COUNT NUMBER)

voglio una query che può estrarre l'intervallo da cui voglio avere la rottura dei record di somma al valore XYZ. dirò 50.000 è il bisogno di rottura. poi deve visualizzare tutti gli intervalli da cui RESOURCE_VALUE a cui RESOURCE_VALUE posso ottenere sum < = 50.000. un valore RESOURCE_VALUE può essere incluso in un solo intervallo.

esempio: esempi di dati Il sottostante è l'input

resource_value | tot_count
---------------+----------
       1          100
       2          50
       3          20
       4          30
       5          300
       6          250
       7          200
       8          30
       9          60
       10         200
       11         110
       12         120

poi l'output deve essere qualcosa del genere:

output esempio 1: when sum(tot_count)<=300

start resource_value    endresource_value   sum
---------------------+---------------------+-------
       1                      4               300
       5                      5               300
       6                      6               250
       7                      9               290
       10                     10              200
       11                     12              230

output di esempio 2: quando sum(tot_count)<=500

start resource_value    end resource_value  sum 
---------------------+---------------------+------
           1                   4             300
           5                   5             300
           6                   8             480
           9                   12            490

En title : Sum operation performed on rows till specified value: a new row for each group for which the sum exceeds the specified value

4 Comments:

  1. immagino che si utilizza ORACLE, a causa della struttura della tabella, e in oracolo è possibile utilizzare questa query per ottenere il vostro obiettivo:

    with vw1(val,flg,sumval) as
    (select 1 val,0 flg,TOT_COUNT sumval
    from TEMP where RESOURCE_VALUE = '1'
    union all
    select vw1.val + 1 val,
    case when vw1.sumval + t1.TOT_COUNT > 300 then vw1.flg + 1 else vw1.flg end flg,
    case when vw1.sumval + t1.TOT_COUNT > 300 then t1.TOT_COUNT else vw1.sumval + t1.TOT_COUNT end sumval
    From TEMP t1,vw1 WHERE t1.RESOURCE_VALUE = TO_CHAR(vw1.val + 1))
    select min(val) START_RESOURCE_VALUE,max(val) END_RESOURCE_VALUE,
    max(sumval) "SUM" from vw1 group by flg order by min(val);
    

    Fiddle di SQL

More similar articles:

  • SQL Server, come trovare l'operazione eseguita in particolare dbts
  • l'operazione non poteva essere eseguita perché OLE DB provider "SQLNCLI10" per il server collegato "DB_PROD_04" non era in grado di avviare una transazione distribuita
  • ORA-22288: operazione file o LOB FILEOPEN fallito Il sistema non riesce a trovare il percorso specificato
  • l'operazione 'Distinct' non può essere applicata alla collezione ResultType dell'argomento specificato
  • questa operazione non può essere eseguita perché il disco virtuale specificato non è stato trovato
  • errore: "l'operazione non può essere eseguita in questo gestore di eventi" durante l'impostazione del valore alla visualizzazione della griglia
  • mettere in grassetto gli elementi di una matrice se supera un valore specificato
  • operazione aritmetica del valore che supera il limite nell'obiettivo c
  • quale operazione viene eseguita da questa macro?
  • quale operazione di bit di controllo viene eseguita in caso di parità a due bit di controllo in ALU?
  • errore System.IO.Exception: "l'operazione richiesta non può essere eseguita su un file con una sezione aperta."
  • la raccolta è stata modificata; l'operazione di enumerazione non può essere eseguita aggiungendo il controllo ad un pannello nel pannello di aggiornamento
  • errore MSMQ Remote Receive "Il nome del formato specificato non supporta l'operazione richiesta"
  • Ef 4.1 e "Collezione è stata modificata; l'operazione di enumerazione non può essere eseguita". eccezione fatta eccezione per eccezione eccezione
  • query PFUser - Attenzione: l'operazione a lungo termine viene eseguita sul thread principale - iOS
  • errore di stampa: nessuna applicazione è associata al file specificato per questa operazione
  • errore: la raccolta è stata modificata; l'operazione di enumerazione non può essere eseguita
  • eccezione: collezione è stata modificata; operazione di enumerazione non può essere eseguita, lanciata mentre clone ()
  • c # con Monitor Collection è stato modificato; operazione di enumerazione potrebbe non essere eseguita
  • posso usare C per sapere se un'operazione di file viene eseguita sul disco durante l'esecuzione?
  • SCOM 2012 Hai specificato il server sbagliato per questa operazione
  • può un'operazione essere eseguita nel costruttore quando un array viene digitato in quella classe
  • la raccolta è stata modificata; l'operazione di enumerazione non può essere eseguita. c # C
  • Android 4.3 Bluetooth ble non chiamare onCaratteristicRead () dopo l'operazione di scrittura eseguita
  • l'operazione richiesta non può essere eseguita perché il provider OLE DB 'MSOLAP' per il server collegato 'SSAS' non supporta l'interfaccia richiesta
  • DbContext.Add error, Collection was modified; operazione di enumerazione non può essere eseguita
  • upload su S3 - Un'operazione su un socket non può essere eseguita perché il sistema non ha sufficiente spazio buffer
  • tipo di invalido: operazione non valida viene eseguita
  • collezione è stata modificata; operazione di enumerazione non può essere eseguita in ArrayList
  • sulla modifica non funziona quando l'operazione di controllo eseguita dal pulsante