coredata - 获取具有最大值的不同行

Posted

技术标签:

【中文标题】coredata - 获取具有最大值的不同行【英文标题】:coredata - fetch distinct rows having maximum value 【发布时间】:2015-11-03 05:18:40 【问题描述】:

我正在尝试将我的 NSFetchRequest 设置为核心数据以检索“具有更高速率的唯一名称”的行

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"rate = max(rate)"];
[request setPropertiesToFetch:@[@"name"]];
request.predicate = predicate;
[request setReturnsDistinctResults:YES];

但上面只返回一行具有最大速率的行。

所需样品

  name | rate | factor |
_______|______|________|
John   |  3.2 |    7   |
Betty  |  5.5 |    7   |
Betty  |  7.1 |    2   |
Betty  |  3.1 |    2   |
Edward |  5.5 |    1   |
Edward |  4.5 |    2   |
John   |  4.3 |    4   |

我将如何设置返回数组的请求

John,  4.3, 4
Betty, 7.1, 2
Edward,5.5, 1

我们可以用 fetch 查询本身对其进行排序(按速率降序排序)吗?所以结果数组将是

Betty, 7.1, 2
Edward,5.5, 1
John,  4.3, 4

【问题讨论】:

【参考方案1】:

NSFetchRequestpropertiesToGroupBy 属性设置为包含“名称”。

注意:您可能还必须以某种方式聚合因子列,以便 group by 起作用。

【讨论】:

顺便说一句,我无法获得“因子”的正确值。

以上是关于coredata - 获取具有最大值的不同行的主要内容,如果未能解决你的问题,请参考以下文章

具有重复电子邮件 ID 的不同行数

UITableView - 具有相同数组的部分中的不同行

如何查询所有仅具有最高值的不同行?

SQL查询以选择具有最小值的不同行

使用 CoreData 获取最大值

具有数组字段的 bigquery 表中的不同行