繁体   English   中英

Rails选择,分组,拥有,计数

[英]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 byhaving 您只需执行以下操作即可获得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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM