mysql - 在 ActiveRecord 中按星期几进行分组、排序和计数

标签 mysql ruby-on-rails activerecord

我有一个带有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 中。

非常感谢~

最佳答案

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

关于mysql - 在 ActiveRecord 中按星期几进行分组、排序和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46892959/

相关文章:

java - 选择和删除

sql - Rails,在最后一个之前找到对象,例如 -1

mysql - Rails Count 和 Group 返回计数和值

ruby-on-rails - 如何在 Rails/ActiveRecord 中锁定父记录?

ruby-on-rails - Rails : many to many Model, NoMethodError:未定义的方法

ruby-on-rails - 协会 Rails 4 的条件

授予后 MySQL 错误 1045,我做错了什么?

mysql - 执行存储过程时出现错误

php - 如何在mysql中使用多个and or运算符

ruby-on-rails - 使用Rails从子域读取域的cookie