簡體   English   中英

在ActiveRecord中按星期幾進行分組,排序和計數

[英]Group, order, and count, by day-of-week in 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查詢,如何做到這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM