Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按多列排序_Sql_Ruby On Rails_Ruby - Fatal编程技术网

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