Hallo Beate,
Jetzt interessiert mich nicht mehr, wer für was, sondern wieviele Personen für was gestimmt haben.
Das erreiche ich durch das folgende select-Statement:select Obst, count(*) as Anzahl from table group by Obst order by Anzahl desc, Obst
dadurch ensteht die folhgende Ausgabe:
Obst Anzahl
Apfel 2
Birne 2
Erdbeere 1Soweit so gut, aber jetzt möchte ich die Anzahl nicht als Zahlen sonder in Prozent ausgegeben haben, so daß das Ergebnis folgendermaßen aussehen würde:
Obst Prozent
Apfel 40
Birne 40
Erdbeere 20Wer weiß, wie ich die select-Anweisung verändern muß, damit diese Ausgabe herauskommt?
Wenn's geht in MySQL oder Oracle.
Wenn dir eine Oracle Datenbank zur Verfuegung steht, kannst du dir eine kleine PL/SQL Funktion schreiben:
Create Or Replace PACKAGE math is
FUNCTION Rowcount Return NUMBER;
Pragma Restrict_References(Rowcount, WNDS, WNPS, RNPS);
End math;
/
Create or Replace PACKAGE BODY math is
FUNCTION Rowcount Return NUMBER is anzahl INTEGER;
Begin
SELECT count(*) INTO anzahl FROM table;
Return anzahl;
End Rowcount;
End math;
/
Die Funktion Rowcount wird damit definiert und dauerhaft im Package math in der Datenbank unter deiner Userid abgelegt.
math.Rowcount liefert die Anzahl der Saetze in der Tabelle table zurueck.
Das gewuenschte Ergebnis erhalst du dann mit:
SELECT Obst, Count(*)*100 /math.Rowcount as Prozent
FROM table
GROUP BY obst
Ich weiss nicht, ob MySQL auch Prozeduren erlaubt. Falls nicht, kannst du dir mit einer Hilfstabelle behelfen:
CREATE table temp (anzahl integer);
1. Schritt:
DELETE FROM temp;
INSERT INTO temp
SELECT count(*) FROM table;
2. Schritt:
SELECT a.Obst, Count(a.*)*100/b.anzahl
FROM table a, temp b
GROUP BY a.Obst
Viele Gruesse
Kess