Sql 按多列排序
假设我有一个包含以下字段的表项目:Sql 按多列排序,sql,ruby-on-rails,ruby,Sql,Ruby On Rails,Ruby,假设我有一个包含以下字段的表项目: 发行数量 评论数 追随者人数 创建于 我想根据所有字段对项目进行排序,但每个字段的优先级不同。具有较高问题的项目应该更高,即使其评论或关注者数量较少。 假定优先顺序为: 问题>关注者>评论>创建时间 我不能用这样的东西: Select * from Projects ORDER BY Issue, Followers, Comments, Created_at 这将首先按问题排序,然后根据追随者解决冲突,等等。例如:我希望一个有5个问题和10条评论的项目
- 发行数量
- 评论数
- 追随者人数
- 创建于
Select * from Projects ORDER BY Issue, Followers, Comments, Created_at
这将首先按问题排序,然后根据追随者解决冲突,等等。例如:我希望一个有5个问题和10条评论的项目比一个有3个问题和50条评论的项目放得低
我想我需要使用一些乘法因子来按比例缩放所有东西。然而,我不知道细节
假设:1期=2个追随者=4条评论=1周前创建的时间可能是这样的吗
Select * from Projects
ORDER BY Issue * 5 + Followers * 3 + Comments DESC, Created_at
也许是这样的
Select * from Projects
ORDER BY Issue * 5 + Followers * 3 + Comments DESC, Created_at
也许是这样的
Select * from Projects
ORDER BY Issue * 5 + Followers * 3 + Comments DESC, Created_at
也许是这样的
Select * from Projects
ORDER BY Issue * 5 + Followers * 3 + Comments DESC, Created_at
别忘了把它改成desc,因为现在你会首先得到所有值都为0的字段,你还需要弄清楚如何在从现在到创建的几周内得到这些值。我想我应该尝试一下明显的查询。然而,我担心查询的长度。实际上,我已经发布了问题的简单版本,这些字段位于与project.id相关的不同表中。因此,只有两个字段我的查询看起来像:
@projects=Project.joins(“comments.Project\u id=projects.id项目的内部连接评论”).group(“projects.id”).order(“count(issues.Project\u id)*5+count(comments.Project\u id)*3 desc
别忘了将其改为desc,因为现在您将首先得到所有值均为0的字段,而且您还需要找出如何在从现在到创建的几周内获得值。\u atI猜想我应该尝试明显的查询。然而,我担心查询的长度。实际上,我已经发布了问题的简单版本,这些字段位于与project.id相关的不同表中。因此,只有两个字段我的查询看起来像:@projects=Project.joins(“comments.Project\u id=projects.id项目的内部连接评论”).group(“projects.id”).order(“count(issues.Project\u id)*5+count(comments.Project\u id)*3 desc
别忘了将其改为desc,因为现在您将首先得到所有值均为0的字段,而且您还需要找出如何在从现在到创建的几周内获得值。\u atI猜想我应该尝试明显的查询。然而,我担心查询的长度。实际上,我已经发布了问题的简单版本,这些字段位于与project.id相关的不同表中。因此,只有两个字段我的查询看起来像:@projects=Project.joins(“comments.Project\u id=projects.id项目的内部连接评论”).group(“projects.id”).order(“count(issues.Project\u id)*5+count(comments.Project\u id)*3 desc
别忘了将其改为desc,因为现在您将首先得到所有值均为0的字段,而且您还需要找出如何在从现在到创建的几周内获得值。\u atI猜想我应该尝试明显的查询。然而,我担心查询的长度。实际上,我已经发布了问题的简单版本,这些字段位于与project.id相关的不同表中。因此,我的查询只有两个字段是这样的:@projects=Project.joins(“comments.Project\u id=projects.id项目的内部连接评论”).group(“projects.id”).order(“count(issues.Project\u id)*5+count(comments.Project\u id)*3 desc