2013-01-23 5 views
9

In SPARQL, wir können Gruppe die Zeilen durch eine Spalte durch die gollowing Syntax:SPARQL: wie GROUP BY mehr als eine Spalte

GROUP BY ?colName 

Können wir Gruppe von mehr als 1 Spalten zB:

GROUP BY (?colName1 + ?colName2 + ?colName3) 

Angenommen, eine Abfrage wie:

Select ?a ?b ?c (MIN(?y) AS ?d) 
Where { 
.... 
} 
GROUP BY (?a + ?b + ?c) 

Aber diese Abfrage nicht funktioniert.

Antwort

-2

Haben Sie so etwas wie

SELECT versucht? A + b +? C, (MIN (? Y) AS? D) Wo { .... } GROUP BY (? A +? B +? c)

Dies funktioniert in SQL Server ganz gut

5

Sie können GROUP BY mehrere Variablen (keine Spalten), indem sie mit einem Raum Auflistung zwischendurch:

GROUP BY ?a ?b ?c 
4

Neben Ben Companjen Antwort von

GROUP ?a ?b ?c 

müssen Sie die SELECT-Linie beheben, da Sie nicht den unbestimmten Nicht-Gruppenschlüssel, ohne explizit zu sagen, so beispielsweise umkippen können

+0

Ich hatte noch nicht über 'SAMPLE' gelesen, aber jetzt, da ich es getan habe, denke ich, dass die 'SELECT'-Klausel nicht korrigiert werden muss. 'SAMPLE' wird für Variablen in der' SELECT'-Klausel benötigt, die _not_ in der 'GROUP BY'-Klausel sind und nicht anderweitig aggregiert sind, aber'? A? B? C' sind genau die Variablen in der 'GROUP BY'-Klausel. Wenn einige zusätzliche Variablen "? E" "SELECT", aber nicht "GROUP BY" wären, müsste es "SAMPLE" lauten. –