Ich habe ein einfaches Abstimmungssystem, das Stimmen sammelt. Die Tabellierung sollte insgesamt Ja-Stimmen dividiert durch Gesamtstimmen umfassen, um zu bestimmen, ob eine Zweidrittelmehrheit erreicht ist. Derzeit kann ich die Daten zurückgeben, diese Abfrage mitmysql Prozentsatz in Select berechnen
select sum(case when vote is not null and recruit_id=49631 then 1 else 0 end)
as total_votes,
sum(case when vote=1 and recruit_id=49631 then 1 else 0 end) as total_yes from votes;
diese zurück
+-------------+-----------+
| total_votes | total_yes |
+-------------+-----------+
| 3 | 2 |
+-------------+-----------+
was würde Ich mag etwas zu tun ist, wie diese
+-------------+-----------+-----------+
| total_votes | total_yes | YESPercent|
+-------------+-----------+-----------+
| 3 | 2 | 66.6 |
+-------------+-----------+-----------+
ich mit so etwas versucht, wie dies:
select sum(case when vote is not null and recruit_id=49631 then 1 else 0 end) as total_votes,
sum(case when vote=1 and recruit_id=49631 then 1 else 0 end) as total_yes,
sum(total_votes,total_yes,(total_yes/total_votes)*100) as YESPercent from votes;
Es erkennt nicht die total_yes oder total_votes für den letzten Teil .. Irgendwelche Tipps oder Links zu guter Anleitung?
Einfügen dieses direkt in den Ergebnissen in ' 'FROM Stimmen WHERE recruit_id = 49631) t'' ich es geändert haben als t; als das Ende mit dem gleichen Ergebnis. Ich spiele immer noch mit dem Code und versuche herauszufinden, was los ist. Vielen Dank für den Tipp auf Nullen zu ignorieren, indem Sie zählen, es hat definitiv meine Abfrage Zeit beschleunigt! – driz
ich habe es funktioniert, indem ich dies tun, ich muss einige weitere Daten in die Tabelle hinzufügen, um sicherzustellen, dass es funktioniert wie erwartet, aber danke! 'select sum (total_yes * 100/total_votes) als Yes_Percent von (zähle count (vote) als total_votes, count (fall bei vote = 1 dann 1 end) als total_yes von votes wo recruit_id = 49631) als t;' – driz