ActiveRecord查询可根据条件检索频率

时间:2019-06-07 04:29:58

标签: sql ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-5

请阅读所有内容

您好,我需要进行一些或多或少的复杂计算(至少对我而言),我已经执行了一个具有多个联接的查询,以合并多个表并选择一些列,但是现在我必须计算一个字段,该字段为deliver.status_id,问题是我必须仅考虑一个deliver_group.id 来进行此计算,这是什么意思?让我们举个例子:

如果我有这些选定的列...

|---------------------|------------------|
|  deliver.status_id  | deliver_group.id |
|---------------------|------------------|
|          1          |         10       |
|---------------------|------------------|
|          3          |         11       |
|---------------------|------------------|
|          4          |         12       |
|---------------------|------------------|
|          2          |         12       |
|---------------------|------------------|
|          1          |         12       |
|---------------------|------------------|
|          2          |         13       |
|---------------------|------------------|
|          3          |         13       |
|---------------------|------------------|

然后deliver.status_id的频率为{1 => 2, 2 => 2, 3 => 2 4 => 1},但是正如我所说,我只需要考虑一次出现的deliver_group.id,这意味着频率将为{{1} },因为重复{1 => 1, 2 => 1, 3 => 1, 4 => 1}时我必须“忽略” deliver.status_id

deliver_group.id

另一个例子:

|---------------------|------------------|
|  deliver.status_id  | deliver_group.id |
|---------------------|------------------|
|          1          |         10       |
|---------------------|------------------|
|          3          |         11       |
|---------------------|------------------|
|          4          |         12       |
|---------------------|------------------|
|          2          |   12 (ignored)   |
|---------------------|------------------|
|          1          |   12 (ignored)   |
|---------------------|------------------|
|          2          |         13       |
|---------------------|------------------|
|          3          |   13 (ignored)   |
|---------------------|------------------|

将得到|---------------------|------------------| | deliver.status_id | deliver_group.id | |---------------------|------------------| | 1 | 7 | |---------------------|------------------| | 3 | 8 | |---------------------|------------------| | 4 | 9 | |---------------------|------------------| | 2 | 9 (ignored) | |---------------------|------------------| | 1 | 10 | |---------------------|------------------| | 2 | 11 | |---------------------|------------------| | 3 | 11 (ignored) | |---------------------|------------------| | 3 | 11 (ignored) | |---------------------|------------------| | 3 | 12 | |---------------------|------------------| | 3 | 12 (ignored) | |---------------------|------------------| | 3 | 12 (ignored) | |---------------------|------------------|

顺便说一句,我不想​​使用ruby语法来做到这一点,我的意思是,我知道如何使用{1 => 2, 2 => 1, 3 => 2, 4 => 1}和一个迭代器来做到这一点,等等,等等,但是我想要完全通过查询进行计算,因为性能是此应用程序的关键

Hash我知道什么都不被忽略的情况非常简单,但是我迷失了实际情况。

0 个答案:

没有答案