我有一个包含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中。
非常感谢〜