Skip to content

Instantly share code, notes, and snippets.

@u2
Last active January 2, 2016 04:39
Show Gist options
  • Save u2/8252372 to your computer and use it in GitHub Desktop.
Save u2/8252372 to your computer and use it in GitHub Desktop.
Rails Group日期(日/周/月/年)
def self.total_grouped_by(date_part)
case date_part
when 'day'
downloads = self.joins(:app_version).group("EXTRACT(YEAR from downloads.created_at),DATE(downloads.created_at),app_versions.name")
downloads = downloads.order("max(EXTRACT(YEAR from downloads.created_at)) desc,max(DATE(downloads.created_at)) desc,max(app_versions.name)")
downloads = downloads.select("EXTRACT(YEAR from downloads.created_at) as created_year,DATE(downloads.created_at) as created_part, app_versions.name as app_name, count(downloads.id) as total")
when 'week'
downloads = self.joins(:app_version).group("EXTRACT(ISOYEAR from downloads.created_at),EXTRACT(#{date_part} from downloads.created_at),app_versions.name")
downloads = downloads.order("max(EXTRACT(ISOYEAR from downloads.created_at)) desc,max(EXTRACT(#{date_part} from downloads.created_at)) desc,max(app_versions.name)")
downloads = downloads.select("EXTRACT(ISOYEAR from downloads.created_at) as created_year,EXTRACT(#{date_part} from downloads.created_at) as created_part, app_versions.name as app_name, count(downloads.id) as total")
when 'month','year'
downloads = self.joins(:app_version).group("EXTRACT(YEAR from downloads.created_at),EXTRACT(#{date_part} from downloads.created_at),app_versions.name")
downloads = downloads.order("max(EXTRACT(YEAR from downloads.created_at)) desc,max(EXTRACT(#{date_part} from downloads.created_at)) desc,max(app_versions.name)")
downloads = downloads.select("EXTRACT(YEAR from downloads.created_at) as created_year,EXTRACT(#{date_part} from downloads.created_at) as created_part, app_versions.name as app_name, count(downloads.id) as total")
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment