| Module | Sequel::Sequel4DatasetMethods |
| In: |
lib/sequel/extensions/sequel_4_dataset_methods.rb
|
Alias for where.
# File lib/sequel/extensions/sequel_4_dataset_methods.rb, line 28
28: def and(*cond, &block)
29: where(*cond, &block)
30: end
Alias for exclude.
# File lib/sequel/extensions/sequel_4_dataset_methods.rb, line 33
33: def exclude_where(*cond, &block)
34: exclude(*cond, &block)
35: end
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
# File lib/sequel/extensions/sequel_4_dataset_methods.rb, line 44
44: def interval(column=Sequel.virtual_row(&Proc.new))
45: if loader = cached_placeholder_literalizer(:_interval_loader) do |pl|
46: arg = pl.arg
47: aggregate_dataset.limit(1).select((SQL::Function.new(:max, arg) - SQL::Function.new(:min, arg)).as(:interval))
48: end
49:
50: loader.get(column)
51: else
52: aggregate_dataset.get{(max(column) - min(column)).as(:interval)}
53: end
54: end
Returns a Range instance made from the minimum and maximum values for the given column/expression. Uses a virtual row block if no argument is given.
DB[:table].range(:id) # SELECT max(id) AS v1, min(id) AS v2 FROM table LIMIT 1
# => 1..10
DB[:table].interval{function(column)} # SELECT max(function(column)) AS v1, min(function(column)) AS v2 FROM table LIMIT 1
# => 0..7
# File lib/sequel/extensions/sequel_4_dataset_methods.rb, line 63
63: def range(column=Sequel.virtual_row(&Proc.new))
64: r = if loader = cached_placeholder_literalizer(:_range_loader) do |pl|
65: arg = pl.arg
66: aggregate_dataset.limit(1).select(SQL::Function.new(:min, arg).as(:v1), SQL::Function.new(:max, arg).as(:v2))
67: end
68:
69: loader.first(column)
70: else
71: aggregate_dataset.select{[min(column).as(v1), max(column).as(v2)]}.first
72: end
73:
74: if r
75: (r[:v1]..r[:v2])
76: end
77: end