Method: Sequel::Sequel4DatasetMethods#interval

Defined in:
lib/sequel/extensions/sequel_4_dataset_methods.rb

#interval(column = (no_arg = true), &block) ⇒ Object

Returns the interval between minimum and maximum values for the given column/expression. Uses a virtual row block if no argument is given.

DB[:table].interval(:id) # SELECT (max(id) - min(id)) FROM table LIMIT 1
# => 6
DB[:table].interval{function(column)} # SELECT (max(function(column)) - min(function(column))) FROM table LIMIT 1
# => 7
[View source]

44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/sequel/extensions/sequel_4_dataset_methods.rb', line 44

def interval(column=(no_arg = true), &block)
  column = Sequel.virtual_row(&block) if no_arg
  if loader = cached_placeholder_literalizer(:_interval_loader) do |pl|
      arg = pl.arg
      aggregate_dataset.limit(1).select((SQL::Function.new(:max, arg) - SQL::Function.new(:min, arg)).as(:interval))
    end

    loader.get(column)
  else
    aggregate_dataset.get{(max(column) - min(column)).as(:interval)}
  end
end