gpt4 book ai didi

sql - Ruby on Rails 根据数据库值计算 "rank"?

转载 作者:搜寻专家 更新时间:2023-10-30 21:39:49 26 4
gpt4 key购买 nike

有没有一种简单快捷的方法可以使用 Ruby on Rails 计算数据库中字段的排名?例如,如果我有一个 math_scores 表,并且想找到一个给定的 a

MathScore.find(:all, :condtions => ... :order =>...) 

然后遍历所有这些以找出测试分数下降的位置,但必须有更直接的方法......有什么建议吗?

这是关于模式的一些信息,它只是一个简单的表:

名字 varchar(50)

姓氏 varchar(50)

test_id 整型

分数 float

澄清:我想问题更接近我在做时如何检索排名值:

rank = MathScore.find_by_sql(
"select count(*) as rank
from (
select * from math_scores
where score > (select score from high_scores where test_id = 33
AND first_name = 'John' AND last_name = 'Doe'
)
order by score desc
) as s"
)

我得到 [#<HighScore:0x6ca4724 @attributes={"rank"=>"3"}>]:Array基于查询,但如何获得排名值?

提前致谢,本

最佳答案

您可以使用 named scopes使用 Rails 2.2 来帮助解决这个问题,例如。

class MathScore
named_scope :passed, :conditions => {:score => 60..100 }
named_scope :failed, :conditions => {:score => 0..59}
end

这将允许您在 Controller 中执行以下操作:

@passing_scores = MathScore.passed
@failing_scores = MathScore.failed

因此您可以在 View 中遍历它们。


回应您的澄清(在 erb 中):

<% your_array.each do |hs| %>
<%= hs.rank %>
<% end %>

关于sql - Ruby on Rails 根据数据库值计算 "rank"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/632971/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com