[英]Rails select, group, having, count
我想获取1小时以下,1-2小时以上和2小时以上的约会数量。
Appointment
.select("id, EXTRACT(MINUTE FROM (check_out_at - check_in_at)) as minutes")
.group("id, minutes")
.having("count('minutes') < 60")
.count
count方法返回以下异常:
ActiveRecord::StatementInvalid: PG::SyntaxError: ERROR: syntax error at or near "as"
LINE 1: ...EXTRACT(MINUTE FROM (check_out_at - check_in_at)) as minutes...
假设id
是主键,你既不需要group by
也having
。 您只需执行以下操作即可获得1小时内的约会计数:
Appointment.where("(EXTRACT(epoch FROM (check_out_at - check_in_at))) < 3600").count
要获得按小时分组的所有约会的计数,可以执行以下操作:
Appointment.group("Floor(Extract(epoch from (check_out_at - check_in_at))/3600)").count
输出如下:
{0.0=>1, 2.0=>31, 3.0=>11}
意思是1个约会在0-1小时之间,31个约会在2-3小时之间,依此类推。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.