我很难想出一种为 csv 编译一些统计数据的好方法。
我有一个统计表,其中有一个 session_id 列和一个 created_at 列,以及一些属于某些的其他关联。
我想要实现的是格式良好的结果,它计算唯一的 session_ids(有时有重复的会话。我不需要计算这些),然后将这些数字分组到出现的时间。
目前,如果我这样做:
Stat.group("date_format(created_at, '%H')").count
它返回这个
=> {"00"=>100, "01"=>77, "02"=>80, "03"=>88, "04"=>96, "05"=>98, "06"=>104, "07"=>87, "08"=>80, "09"=>67, "10"=>92, "11"=>67, "12"=>83, "13"=>91, "14"=>72, "15"=>64, "16"=>61, "17"=>169, "18"=>90, "19"=>83, "20"=>119, "21"=>94, "22"=>95, "23"=>82}
这非常适合返回所有结果 - 我确实需要。
但我还需要弄清楚如何组合这样的东西——它只返回唯一的会话
Stat.select(:session_id).map(&:session_id).uniq
我在 mysql 中搞砸了,想出了这个——它看起来可以满足我的需要。但我不知道如何让它与活动记录一起玩得很好。
SELECT COUNT(*) AS count_all, date_format(created_at, '%H') AS date_format_created_at_h,COUNT(DISTINCT session_id) AS session FROM my_db.stats GROUP BY date_format(created_at, '%H')
谁能阐明如何实现这一目标?
先感谢您。