MYSQL - Statistik erstellen mit count, group
Sabine
- datenbank
0 ChrisB
Ich habe eine Tabelle in der zwei Spalten Sind
INTERN ! PAGE
-------------------
0 ! seite
0 ! berg
12 ! index
0 ! index
14 ! index
0 ! seite
über diese möchte ich eine Statisik erstellen, das mache ich so
select page, count(page)AS anzahl from tabelle GROUP BY page ORDER BY anzahl
DESC
das sieht dann so aus:
PAGE ANZAHL
index 3
berg 1
seite 2
doch ich möchte nun auch die Splate INTERN einbinden, dort sind nur Einträge
wenn in der Spalte PAGE index steht!
Die Ausgabe sollte dann so sein
PAGE ANZAHL
index 1
berg 1
12 1
14 1
seite 2
Aber leider finde ich keinen Ansatz für eine Lösung. Vieleicht hat hier jemand einen Tipp für mich?
Sabine
Hi,
Vieleicht hat hier jemand einen Tipp für mich?
Tipp: Formuliere bitte künftig deine Aufgabenstellung so, dass sie eindeutig ist und keinen Ratespielraum lässt, welche Daten du wie ermittelt haben möchtest.
Also bitte nicht nur Beispieldaten hinwerfen und „so möchte ich das“ - sondern vor allem auch verbal(!) erklären(!), was da wie ermittelt werden soll.
Danke.
doch ich möchte nun auch die Splate INTERN einbinden, dort sind nur Einträge wenn in der Spalte PAGE index steht!
Die Ausgabe sollte dann so sein
PAGE ANZAHL
index 1
berg 1
12 1
14 1
seite 2
Also willst du den Inhalt der Spalte page und die Anzahl, nach page gruppiert, für alle Einträge, bei denen entweder page nicht gleich 'index' ist, oder gleich 'index' und dabei dann aber intern gleich 0,
und außerdem den Inhalt der Spalte index nebst Anzahl, nach intern gruppiert, von den „restlichen“ ...
... ja? (Wie gesagt, das muss ich aus deinen Beispieldaten vermuten/erraten.)
Dann bietet es sich an, diese zwei Selektionen einzeln zu machen und per UNION zu verbinden:
( SELECT page, count(page) anzahl
FROM tabelle
WHERE page != 'index' OR (page = 'index' AND intern = 0)
GROUP BY page )
UNION
( SELECT intern, count(intern)
FROM tabelle
WHERE page = 'index' AND intern != 0
GROUP BY intern )
Weitere Details zu UNION, wie dass die Vergabe der Aliase vom ersten SELECT abhängt, wie man ggf. sortiert etc., entnehme bitte dem Handbuch.
MfG ChrisB