Class Window
In: lib/sequel/sql.rb
Parent: Expression

A Window is part of a window function specifying the window over which a window function operates.

  Sequel::SQL::Window.new(partition: :col1)
  # (PARTITION BY col1)
  Sequel::SQL::Window.new(partition: [:col2, :col3])
  # (PARTITION BY col2, col3)

  Sequel::SQL::Window.new(order: :col4)
  # (ORDER BY col4)
  Sequel::SQL::Window.new(order: [:col5, Sequel.desc(:col6)])
  # (ORDER BY col5, col6 DESC)

  Sequel::SQL::Window.new(partition: :col7, frame: :all)
  # (PARTITION BY col7 ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING)
  Sequel::SQL::Window.new(partition: :col7, frame: :rows)
  # (PARTITION BY col7 ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
  Sequel::SQL::Window.new(partition: :col7, frame: "RANGE CURRENT ROW")
  # (PARTITION BY col7 RANGE CURRENT ROW)

  Sequel::SQL::Window.new(window: :named_window) # you can create a named window with Dataset#window
  # (named_window)

Methods

new  

Attributes

opts  [R]  The options for this window. Options currently supported:
:frame :if specified, should be :all, :rows, or a String that is used literally. :all always operates over all rows in the partition, while :rows excludes the current row‘s later peers. The default is to include all previous rows in the partition up to the current row‘s last peer.
:order :order on the column(s) given
:partition :partition/group on the column(s) given
:window :base results on a previously specified named window

Public Class methods

Set the options to the options given

[Source]

      # File lib/sequel/sql.rb, line 1905
1905:       def initialize(opts=OPTS)
1906:         @opts = opts.frozen? ? opts : Hash[opts].freeze
1907:         freeze
1908:       end

[Validate]