3

フィールドを調べる必要がある場合 (理想的には、ActiveRecord のみを使用して)、フィールド値に基づいて個別のレコードの数を取得することは可能ですか?

たとえば、次の例では、「created_at」フィールドに基づいて一意のレコードの数が返されます。

Record.count('created_at', :distinct => true)

ただし、同様の方法で「created_at」フィールドに基づいて、たとえば一意の日数を取得することは可能ですか?

私の意図を説明する単純な ActiveRecord の例:

Record.count('created_at'.day, :distinct => true)

(文字列 'created_at' が 'Time' ではないことはわかっていますが、これは ActiveRecord に問い合わせたい種類のクエリです。)

4

1 に答える 1

5

レコードをグループ化する必要があります。例えば

Record.group('DATE(created_at)').count('created_at')

特定の日付ごとに作成された行数を示します。または

Record.group('DAYOFWEEK(created_at)').count('created_at')

個々の曜日に作成された行数がわかります。

これは、通常のアクティブ レコード設定では UTC で日付計算を行うことに注意してください。特定のタイムゾーンで計算を行いたい場合は、その変換をグループ ステートメントに追加する必要があります。

于 2013-01-27T12:08:37.883 に答える