0
수 :별개 나는 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];
무엇을 추가해야합니까?
NSManagedObjectContext *moc;
NSEntityDescription *birdEntity = [NSEntityDescription entityForName:"Bird" inManagedObjectContext:moc];
NSFetchRequest *fetchAllBirds = [[NSFetchRequest new] autorelease];
[fetchAllBirds setEntity:birdEntity];
NSArray *allBirds = [moc executeFetchRequest:fetchAllBirds error:NULL];
NSArray *species = [allBirds valueForKeyPath:@"@distinctUnionOfObjects.species"];
NSMutableDictionary *speciesCounts = [NSMutableDictionary dictionaryWithCapacity: [species count]];
for (NSString *speci in species)
{
NSFetchRequest *fetchSpeci = [[NSFetchRequest new] autorelease];
[fetchSpeci setEntity: birdEntity];
[fetchSpeci setPredicate:[NSPredicate predicateWithFormat:@"speci == %@", speci]];
int speciCount = [moc countForFetchRequest:fetchSpeci];
[speciesCounts setObject:[NSNumber numberWithInt:speciCount] forKey:speci];
}
을 내가 데이터를 리모델링 좋을 것 : 샘플 데이터에 의해 암시
많은 감사
답변 해 주셔서 감사합니다. 사실 나는 그런 알고리즘에 대해 생각해 봤지만 더 큰 데이터 세트에서는 그다지 빠르지는 않습니다. 어쩌면 나는 그것을 조율하려고 노력해야 하겠지만, 나는 한 가지 요청으로 모든 것을 얻는 것이 실제로 더 효율적이라고 생각했다. – lorenzo