回答

收藏

如何在Rails 3中按时间片(总,平均,最小,最大等)获取聚合数据

技术问答 技术问答 583 人阅读 | 0 人回复 | 2023-09-14

如何在Rails 3中创建按时间片聚合的活动关系查询?, l9 w; c+ @) i' x8 ]/ C& T" a; k
我想建立一个查询,该查询每隔n分钟可以返回具有特定名称的计数器的每个样本的最小值,最大值,平均值,总和,计数。/ q5 k9 p0 j) k! s2 ^+ i
create_table "samples"  
, u- o" [2 d) P    t.integer  "counter_id"  , h2 C. Y( s9 j
    t.string "name"  
7 s& L. O& z4 V3 o4 U$ G6 I    t.float    "value"  + g, D9 S% {5 Z# R2 |( Y1 v
    t.datetime "created_at"  4 o( ?' I/ \$ M8 B$ v' @
end
- R! V# B; \& [/ W4 V+ `               
2 i9 ^& _4 Z: {9 o+ f1 Z3 Q解决方案:7 q! v- X: L+ K
               
" h; C( k1 y2 |5 i
6 O' r4 |% g: `2 O: C# F$ U' C8 Q
  R; P+ |* T& x                不幸的是,我从未使用过Postgres,因此该解决方案可在MySQL中使用。但是我认为您可以找到Postgres类似物。
% `1 D  Q3 p1 Z5 [7 V' I3 [class Counter 用法& n$ L* {; C+ H# S
counter = find_some_counter! [4 s0 }# }: n: B0 c
samples = counter.samples.per_time_slice(60).where(:name => "Bobby")' P1 t) o& Q* ~$ A; d) w/ H
samples.map(&:avg_value): o# t& Z0 q: ]" J3 t
samples.map(&:min_value)
. B' k" @# X: e* ~  q/ Lsamples.map(&:max_value)
% P; ]5 i9 D( J& C等等
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则