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)
The options for this window. Options currently supported:
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 on the column(s) given
partition/group on the column(s) given
base results on a previously specified named window
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