hypergraphs.de

Daten verdichten

COUNT, GROUP BY und HAVING in SPARQL

Aggregate fassen Lösungen zusammen; GROUP BY definiert Gruppen und HAVING filtert aggregierte Ergebnisse.

Redaktion Hypergraphs.deFachprüfung: 18.09.2026TechArticle

Gruppen vor dem Aggregat festlegen

GROUP BY teilt Lösungszeilen nach Schlüsselvariablen. Aggregate wie COUNT oder AVG werden pro Gruppe berechnet. Jede nicht aggregierte projizierte Variable muss zur Gruppierung passen.

Ein Join kann dasselbe Produkt mehrfach erzeugen. COUNT(DISTINCT ?produkt) zählt eindeutige Produkte, kann aber eine falsche Joinlogik nur verdecken.

HAVING filtert Gruppen

WHERE filtert einzelne Lösungen vor der Gruppierung. HAVING prüft Bedingungen auf dem aggregierten Gruppenergebnis.

Wer nur Kategorien mit mindestens zehn Produkten sucht, formuliert diese Schwelle deshalb mit HAVING.

Leere Gruppen und Datentypen

Kategorien ohne Treffer entstehen nicht automatisch als leere Gruppe. Sie müssen von der Kategorie ausgehend mit OPTIONAL eingebracht werden, wenn Nullwerte erscheinen sollen.

AVG erwartet numerisch kompatible Werte. Inkonsistente Datentypen sollten vor der Kennzahl bereinigt oder sichtbar ausgewiesen werden.

Produktzahl und Durchschnittspreis je Kategorie

Die Abfrage zählt eindeutige Produkte und zeigt nur Kategorien mit mindestens zehn Produkten.

PREFIX schema: <https://schema.org/>

SELECT ?kategorie
       (COUNT(DISTINCT ?produkt) AS ?anzahl)
       (AVG(?preis) AS ?durchschnitt)
WHERE {
  ?produkt a schema:Product ;
    schema:category ?kategorie ;
    schema:offers/schema:price ?preis .
}
GROUP BY ?kategorie
HAVING(COUNT(DISTINCT ?produkt) >= 10)
ORDER BY DESC(?anzahl)

Eigenständige Beispielabfrage für diese Intention. Endpunktfunktionen und Datensatz müssen vor Produktion separat geprüft werden.

Prüffrage für die Praxis

Prüfe vor dem Zählen, ob Joins Duplikate erzeugen.

Quellen zu diesem Beitrag

Auswahl auf Artikelebene, geprüft am 18.09.2026.

Im SPARQL-Pfad weiterlesen