【发布时间】:2021-03-27 15:26:06
【问题描述】:
我有一个数据集,它为基础查询提供基础输出:
Analyze
.where(some_conditions)
.joins(category: [category_subs: :sub])
.select('user_id, product_id, category_subs.sub_id as sub_id, is_successful, category_subs.level as level')
+---------+-------------+---------------+--------+-------------+
| user_id | product_id | is_successful | sub_id | level |
+---------+-------------+---------------+--------+-------------+
| 3223 | 20441 | 1 | 56 | 14 |
| 3223 | 20441 | 1 | 72 | 22 |
| 3223 | 20441 | 1 | 20 | 22 |
| 3223 | 20443 | 1 | 20 | 14 |
| 3223 | 20443 | 1 | 20 | 22 |
| 3223 | 20443 | 1 | 25 | 6 |
| 3223 | 20443 | 1 | 7 | 22 |
| 3223 | 20444 | 1 | 20 | 14 |
| 3223 | 20444 | 1 | 20 | 22 |
| 3223 | 20444 | 1 | 25 | 6 |
| 3223 | 20444 | 1 | 7 | 22 |
| 3223 | 20445 | 0 | 20 | 14 |
| 3223 | 20445 | 0 | 20 | 22 |
| 3223 | 20445 | 0 | 25 | 6 |
| 3223 | 20445 | 0 | 7 | 22 |
| 3223 | 20448 | 1 | 20 | 14 |
| 3223 | 20448 | 1 | 20 | 22 |
| 3223 | 20448 | 1 | 25 | 6 |
| 3223 | 20448 | 1 | 7 | 22 |
| 3223 | 20449 | 1 | 20 | 14 |
| 3223 | 20449 | 1 | 4 | 2 |
| 3223 | 20449 | 1 | 24 | 14 |
+---------+-------------+---------------+--------+-------------+
我想从该数据中获得成功,忽略 level 属性。
我已经尝试过了,但它并没有像我预期的那样工作:
Analyze
.where(some_conditions)
.joins(category: [category_subs: :sub])
.group('sub_id')
.select('user_id, product_id, category_subs.sub_id as sub_id, sum(is_successful=0)')
输出没有给出我想要的结果的输出:
+--------+----------------------+
| sub_id | sum(is_successful=1) |
+--------+----------------------+
| 4 | 1 |
| 7 | 3 |
| 20 | 8 |
| 24 | 1 |
| 25 | 3 |
| 56 | 1 |
| 72 | 1 |
+--------+----------------------+
预期的输出应该是:
+--------+----------------------+
| sub_id | sum(is_successful=1) |
+--------+----------------------+
| 4 | 1 |
| 7 | 3 |
| 20 | 5 |
| 24 | 1 |
| 25 | 3 |
| 56 | 1 |
| 72 | 1 |
+--------+----------------------+
我可以通过 ruby 方式获取数据,但我需要在 ActiveRecord::Relation 实例中使用它。
【问题讨论】:
标签: mysql ruby-on-rails