【问题标题】:Group, order, and count, by day-of-week in ActiveRecord在 ActiveRecord 中按星期几分组、排序和计数
【发布时间】:2017-10-23 15:20:45
【问题描述】:

我有一个带有timeslot 列(日期时间类型)的表。我想发出一个查询并让它返回如下数据:

Sunday | 24
Monday | 32
Tuesday | 12
Wednesday | 93
Thursday | 22
Friday | 66
Saturday | 25

基本上,第一列按星期几(星期日 -> 星期一)排序,第二列按行的count(*) 排序。

到目前为止,我有一个这样的查询:

order_query = "CASE
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Sunday' THEN 1
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Monday' THEN 2
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Tuesday' THEN 3
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Wednesday' THEN 4
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Thursday' THEN 5
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Friday' THEN 6
    WHEN DAYNAME(CONVERT_TZ(timeslot,'UTC','America/Toronto')) = 'Saturday' THEN 7
END"

week = ProfessionalAvailability.where.not(appointment_id: nil).group('DAYNAME(CONVERT_TZ(timeslot,"UTC","America/Toronto"))').order(order_query).count

这适用于我的情况。但是,如您所见,order_query 是一个相当长的字符串,我想知道是否有一种简单的 ActiveRecord 方法可以做到这一点。

我的数据库在 MySQL 中。

非常感谢~

【问题讨论】:

    标签: mysql ruby-on-rails activerecord


    【解决方案1】:

    group_date 为例,看看如果您想自己构建 SQL 查询,或者只是为您构建 SQL 查询,这是如何实现的。

    【讨论】:

      猜你喜欢
      • 2011-10-31
      • 1970-01-01
      • 2022-08-10
      • 2014-06-26
      • 1970-01-01
      • 2019-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多