2016-03-25 4 views
4

Ich arbeite an einem Projekt, wo ich 5 Probleme mit jeweils 2 Lösungen auflisten. Die Benutzer können über eine Lösung pro Problem abstimmen. Jetzt muss ich den Prozentsatz des höchsten Wertes pro Problem berechnen.SQL berechnet Prozentsatz von zwei Werten mit derselben sub_id.

Zum Beispiel in Problem 1 Ich habe 20 Stimmen auf Lösung 1 und 30 Stimmen auf Lösung 2, ich möchte 60% bekommen. Ich weiß, dass ich die zwei Stimmwerte pro Problem durch 100 teilen muss und multipliziere dann mit dem Wert, der am höchsten ist.

Wie mache ich das in meinem Dao (mit SQL)? Muss ich eine andere Spalte in der Tabelle "Lösungen" machen?

table: solutions 
+----------+------------+---------+ 
| id | id_problem | vote | 
+----------+------------+---------+ 
| 1  |  1  | 25 | 
| 2  |  1  | 10 | 
| 3  |  2  | 18 | 
| 4  |  2  | 2 | 
| 5  |  3  | 6 | 
| 6  |  3  | 7 | 
| 7  |  4  | 11 | 
| 8  |  4  | 4 | 
| 9  |  5  | 5 | 
| 10 |  5  | 2 | 
+----------+------------+---------+ 
+0

Klingt wie eine Aggregation Abfrage mir ('Gruppe by') mit' max() '. –

Antwort

2

Try this:

select 
    id_problem, 
    CONCAT(ROUND(MAX(vote)/SUM(vote), 2) * 100, '%') as Percentage 
from solutions 
group by id_problem; 
+1

Das funktioniert dankeschön! Das einzige Problem ist, dass der Prozentsatz 0.XXXX% Wie kann ich das am besten mit 100 multiplizieren? –

+0

Das funktioniert perfekt! –