Я хотел бы иметь эквивалент ядро данных функции SQL:подсчет различных
SELECT species, sex, COUNT(*) FROM Bird GROUP BY species, sex;
запрос, который, как правило, вернуть этот
+---------+------+----------+
| species | sex | COUNT(*) |
+---------+------+----------+
| Bus | m | 2 |
| Car | f | 1 |
+---------+------+----------+
со следующими записями:
INSERT INTO Bird VALUES ('BlueBird','Car','f');
INSERT INTO Bird VALUES ('RedBird','Bus','m');
INSERT INTO Bird VALUES ('RedBird','Bus','m');
Я выполнил отдельный запрос, но у меня возникли проблемы с подсчетом (*). Вот что у меня есть:
NSFetchRequest *request = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Bird" inManagedObjectContext:managedObjectContext];
[request setEntity:entity];
[request setReturnsDistinctResults:YES];
[request setResultType:NSDictionaryResultType];
NSDictionary *entityProperties = [entity propertiesByName];
NSMutableArray *properties = [NSMutableArray arrayWithObject:[entityProperties objectForKey:@"species"]];
[properties addObject:[entityProperties objectForKey:@"sex"]];
[request setPropertiesToFetch: properties];
Что я должен добавить?
Большое спасибо
Благодарим вас за ответ Бенедикт. На самом деле я подумал о таком алгоритме, но в конечном итоге это не очень быстро на больших наборах данных. Возможно, я должен попытаться настроить его, но я подумал, что получить все в одном запросе будет действительно более эффективно. – lorenzo