# 5.3 HAVING

**Definition**

**HAVING** filtert gruppierte Ergebnisse nach einer Bedingung.

HAVING wird zusammen mit **GROUP BY** und Aggregatfunktionen verwendet.

---

**Grundaufbau**

```sql
SELECT spalte, aggregatfunktion
FROM tabelle
GROUP BY spalte
HAVING bedingung;
```

---

**Beispiel**

```sql
SELECT ort, COUNT(*)
FROM kunde
GROUP BY ort
HAVING COUNT(*) > 5;
```

Bedeutung:

Es werden nur Orte angezeigt, in denen mehr als **5 Kunden** vorhanden sind.

---

**WHERE und HAVING**

| Klausel | Aufgabe |
|--------|---------|
| WHERE | filtert einzelne Datensätze vor der Gruppierung |
| HAVING | filtert Gruppen nach der Gruppierung |

---

**Beispiel WHERE**

```sql
SELECT *
FROM kunde
WHERE ort = 'Berlin';
```

Filtert einzelne Kunden aus Berlin.

---

**Beispiel HAVING**

```sql
SELECT ort, COUNT(*)
FROM kunde
GROUP BY ort
HAVING COUNT(*) > 5;
```

Filtert Gruppen mit mehr als 5 Kunden.

---

**Merksatz**

WHERE filtert Datensätze.  
HAVING filtert Gruppen.

---

**Prüfungshinweis**

In IHK-Aufgaben wird häufig der Unterschied zwischen **WHERE** und **HAVING** abgefragt.

Typische Fehler:

- HAVING ohne GROUP BY verwenden.
- Aggregatfunktionen in WHERE verwenden.
- WHERE und HAVING verwechseln.
- HAVING vor GROUP BY schreiben.

---

**Quellen**

- IT-Handbuch für Fachinformatiker