2016-04-29 5 views
1

Ich habe eine Benutzerschnittstelle, auf der ich die Optionsschaltfläche erfasst und den Zähler in der Datenbank basierend auf dem ausgewählten Wert inkrementiert.So zeigen Sie die Abfrageergebnisse über sql an

All dies funktioniert gut.

Meine Frage ist, wie kann ich die prozentualen Werte der Umfrage Ergebnisse anzeigen?

Dies ist meine DB-Struktur

CREATE TABLE `poll_results` (
    `name` varchar(50) DEFAULT NULL, 
    `count` int(11) DEFAULT NULL, 
    `modified_date` varchar(50) DEFAULT NULL 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 



Insert into poll_results (name,count,modified_date)values ('pollchoiceone' , 3 , now()); 
Insert into poll_results (name,count,modified_date)values ('pollchoicetwo' , 10 , now()); 
Insert into poll_results (name,count,modified_date)values ('pollchoicethree' , 7 , now()); 
Insert into poll_results (name,count,modified_date)values ('pollchoicefour' , 0 , now()); 

Ist es möglich, dass durch eine Auswahlabfrage zu erreichen?

http://sqlfiddle.com/#!9/e5e835/1

+0

Wie würde das gewünschte Ergebnis wie? – Strawberry

Antwort

2

Sie könnten cross join eine Abfrage aus Ihrer Tabelle mit einer Abfrage, die die Gesamtzahl der Stimmen summiert und dann die zwei Hälften teilen. Z.B .:

SELECT  name, `count`, `count`/`total_count` * 100 AS percetnage 
FROM  poll_results 
CROSS JOIN (SELECT SUM(`count`) AS `total_count` 
      FROM poll_results) t 

SQLFiddle example

+0

große Antwort, vielen Dank. – Pawan

1

Eine alternative Lösung vorgefertigte TOTAL_COUNT Tabelle:

SELECT name, `count`, `count`/t.total_count * 100 AS percentage 
FROM poll_results, (select sum(`count`) AS total_count from poll_results) t 

SQL Fiddle

Verwandte Themen