sql >> Databasteknik >  >> RDS >> Oracle

Vad betyder föregående i Oracle?

Du frågar uppenbarligen en tabell T med kolumner WIN_30_DUR , AGENT_MASTER_ID och ROW_DT (bland andra). Tänk på att sökord som OVER , PARTITION visa att du använder en analytisk begäran:sådana förfrågningar låter dig få information om den aktuella raden från de andra, som skulle vara komplex och lång att skriva med GROUP BY eller andra "standard"-satser.

Här, på en given rad, du:

  • grupp (PARTITION ) av AGENT_MASTER_ID :detta får alla rader av T med nuvarande AGENT_MASTER_ID
  • i den partition som du skapade ORDER rader efter ROW_DT
  • denna ordning låter dig välja de 30 raderna före den nuvarande ROW_DT :detta är innebörden av PRECEDING nyckelord (0 skulle välja den aktuella raden, motsatsen är FOLLOWING klausul)
  • sedan gör du en summa på WIN_30_DUR fältet

På vanligt språk skulle detta betyda något i stil med:för varje agent, ta summan av varaktigheterna för de föregående 30 dagarna.



  1. Hämta antalet rader med en GROUP BY-fråga

  2. Oracle Client och ODP.NET versionskompatibilitet

  3. Tillåten minnesstorlek på 8589934592 byte är slut

  4. Hur reparerar man wamp-servern utan att installera om?