Project

groupdate2

0.0
No commit activity in last 3 years
No release in over 3 years
groupdate with support of SQL Server 2016+, and more features
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

Groupdate2

groupdate2 is an enhanced version of the beautiful Groupdate gem, it adds more features to Groupdate

  • SQL Server 2016+ support
  • series_label support

Installation

Add this line to your application’s Gemfile:

gem 'groupdate2'

Features

SQL Server 2016+

MS SQL Server (2016 and above) support by using (AT TIME ZONE).

series_label, an option to include group clause in selected result

User case

If you use groupdate not with ActiveRecord::Calculations, but manually selecting the calculation like:

sql = "COUNT(*) AS count, AVG(delivery.volume/truck.capacity) AS percentage, MIN(collected_at) AS collected_at"

Delivery.select(sql).group_by_day(:collected_at).to_a

It works well except the series label is not included in the result. I have to use MIN(collected_at) to have it, then convert it to the correct label in ruby code. It works but is cumbersome.

With this new option series_label: collected_at_date, it indicates the group clause should be included in the result and can be accessed by the method collected_at_date.

Notes

  • !!! This option does NOT work with ActiveRecord::Calculations.
  • The series_label respects other Groupdate options like :locale, :dates and :format

See more options

An example

users = User.select('COUNT(*) AS total, AVG(age) as average_age').group_by_month(:created_at, series_label: :created_at_month)

#The returned result would have attributes:
users.first.created_at_month
users.first.total
users.first.average_age

Upgrading

5.0.x

  • SQL server support
  • series_label support

4.1.x

This version corresponds to groupdate 4.1.2 with SQL Server support.