Udostępnij za pośrednictwem


Klauzula ramka okna

Dotyczy: zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Określa przesuwany podzbiór wierszy w partycji, na której działa funkcja agregacji lub okna analitycznego.

Składnia

{ frame_mode frame_start |
  frame_mode BETWEEN frame_start AND frame_end } }

frame_mode
{ RANGE | ROWS }

frame_start
{ UNBOUNDED PRECEDING |
  offset_start PRECEDING |
  CURRENT ROW |
  offset_start FOLLOWING }

frame_end
{ offset_stop PRECEDING |
  CURRENT ROW |
  offset_stop FOLLOWING |
  UNBOUNDED FOLLOWING }

Parametry

  • frame_mode

    • WIERSZE

      Jeśli zostanie określona, ramka okna przesuwanego jest wyrażona w odniesieniu do wierszy poprzedzających lub po bieżącym wierszu.

    • ZAKRES

      Jeśli zostanie określona, funkcja okna musi określić klauzulę ORDER BY z pojedynczym wyrażeniem obExpr.

      Granice okna przesuwanego są następnie wyrażane jako przesunięcie od obExpr wartości dla bieżącego wiersza.

  • frame_start

    Pozycja początkowa przesuwanej ramki okna względem bieżącego wiersza.

    • NIEZWIĄZANE POPRZEDNIE

      Określa, że ramka okna rozpoczyna się na początku partycji.

    • offset_start POPRZEDNIE

      Jeśli tryb to ROWS, offset_start jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przed bieżącym wierszem, który rozpoczyna ramka.

      Jeśli tryb to RANGE, offset_start jest dodatnią wartością literału typu, który można odjąć od obExprklasy . Ramka rozpoczyna się od pierwszego wiersza partycji, dla której obExpr jest większy lub równy obExpr - offset_start w bieżącym wierszu.

    • BIEŻĄCY WIERSZ

      Określa, że ramka rozpoczyna się od bieżącego wiersza.

    • offset_start NASTĘPUJĄCE

      Jeśli tryb to ROWS, offset_start jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przeszłości do bieżącego wiersza uruchamianej ramki. Jeśli tryb to RANGE, offset_start jest dodatnią wartością literału typu, który można dodać do obExprklasy . Ramka rozpoczyna się od pierwszego wiersza partycji, dla której obExpr jest większy lub równy obExpr + offset_start w bieżącym wierszu.

  • frame_stop

    Koniec przesuwanej ramki okna względem bieżącego wiersza.

    Jeśli nie zostanie określona, ramka zostanie zatrzymana w bieżącym wierszu. Koniec okna przesuwanego musi być większy niż początek okna.

    • offset_start POPRZEDNIE

      Jeśli frame_mode to ROWS, offset_stop jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przed bieżącym wierszem zatrzymana ramka. Jeśli frame_mode to RANGE, offset_stop jest dodatnią wartością literału tego samego typu co offset_start. Ramka kończy się ostatnim wierszem poza partycją, dla której obExpr wartość jest mniejsza lub równa obExpr - offset_stop bieżącemu wierszowi.

    • BIEŻĄCY WIERSZ

      Określa, że ramka zatrzymuje się w bieżącym wierszu.

    • offsetStop PO

      Jeśli frame_mode to ROWS, offset_stop jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy wklejanych do bieżącego wiersza, na których kończy się ramka. Jeśli frame_mode to RANGE, offset_stop jest dodatnią wartością literału tego samego typu co offset_start. Ramka kończy się ostatnim wierszem partycji, dla której obExpr wartość jest mniejsza lub równa obExpr + offset_stop bieżącemu wierszowi.

    • NIEZWIĄZANE Z NASTĘPUJĄCYMI

      Określa, że ramka okna zatrzymuje się na końcu partycji.