count mit group by gleichzeitig mit ungrouped count?

count mit group by gleichzeitig mit ungrouped count?

am 25.08.2007 08:51:36 von Daniel Maus

Moin zusammen,

ich habe hier eine Spalte, aus der ich die Anzahl der verschiedenen
Werte ausgeben will. Läuft bislang mit select count(foo) group by foo
einwandfrei.

Da ich jetzt aber keine absoluten Werte, sondern prozentuale brauche,
stellt sich mir die Frage, ob ich die Gesamtzahl der Zeilen (eventuell
ohne NULL-Werte) gleichzeitig in der ge'group'ten Abfrage mitberechnen
lassen kann, damit ich direkt Prozentwerte aus der Abfrage rausbekomme.

Ich vermute zwar, daß das mit einer Query nicht geht, aber ich lasse
mich gerne eines besseren belehren. ;-)

Bis denne
Daniel

Re: count mit group by gleichzeitig mit ungrouped count?

am 25.08.2007 10:25:27 von Sven Paulus

Daniel Maus wrote:
> Da ich jetzt aber keine absoluten Werte, sondern prozentuale brauche,
> stellt sich mir die Frage, ob ich die Gesamtzahl der Zeilen (eventuell
> ohne NULL-Werte) gleichzeitig in der ge'group'ten Abfrage mitberechnen
> lassen kann, damit ich direkt Prozentwerte aus der Abfrage rausbekomme.

Du meinst sowas, oder?

mysql> SELECT a, b, COUNT(*) FROM x GROUP BY a, b WITH ROLLUP;
+------+------+----------+
| a | b | COUNT(*) |
+------+------+----------+
| 1 | 2 | 1 |
| 1 | 3 | 1 |
| 1 | 4 | 3 |
| 1 | NULL | 5 |
| 2 | 3 | 2 |
| 2 | 4 | 1 |
| 2 | NULL | 3 |
| NULL | NULL | 8 |
+------+------+----------+
8 rows in set (0.05 sec)

(NULL bedeutet bei ROLLUP "Summe").

Re: count mit group by gleichzeitig mit ungrouped count?

am 25.08.2007 13:40:07 von Harald Fuchs

In article <46cfd16c$0$7695$9b4e6d93@newsspool2.arcor-online.net>,
Daniel Maus writes:

> Moin zusammen,
> ich habe hier eine Spalte, aus der ich die Anzahl der verschiedenen
> Werte ausgeben will. Läuft bislang mit select count(foo) group by foo
> einwandfrei.

> Da ich jetzt aber keine absoluten Werte, sondern prozentuale brauche,
> stellt sich mir die Frage, ob ich die Gesamtzahl der Zeilen (eventuell
> ohne NULL-Werte) gleichzeitig in der ge'group'ten Abfrage mitberechnen
> lassen kann, damit ich direkt Prozentwerte aus der Abfrage rausbekomme.

> Ich vermute zwar, daß das mit einer Query nicht geht, aber ich lasse
> mich gerne eines besseren belehren. ;-)



SELECT foo, count(*) * 100 / (SELECT count(*) FROM mytbl) AS pct
FROM mytbl
GROUP BY foo

Re: count mit group by gleichzeitig mit ungrouped count?

am 26.08.2007 22:25:11 von Daniel Maus

Danke für die Lösungsansätze. Ich muß mal sehen, welchen der beiden ich
dann umsetze.

Bis denne
Daniel