class Window

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)

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

new(opts=OPTS) click to toggle source

Set the options to the options given

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