2013-04-01 15 views
20

Possiedo un database MySQL con 4 voci: id (numerico), group_name, employees e surveys.Calcolo percentuale MySQL

Nel mio SELECT ho bisogno di calcolare la percentuale di 'dipendenti' che, per il numero in 'sondaggi', hanno preso il sondaggio.

Questa è la dichiarazione che ho adesso:

SELECT 
    group_name, 
    employees, 
    surveys, 
    COUNT(surveys) AS test1, 
    ((COUNT(*)/(SELECT COUNT(*) FROM a_test)) * 100) AS percentage 
FROM 
    a_test 
GROUP BY 
    employees 

Ecco la tabella così com'è:

INSERT INTO a_test (id, group_name, employees, surveys) VALUES 
(1, 'Awesome Group A', '100', '0'), 
(2, 'Awesome Group B', '200', '190'), 
(3, 'Awesome Group C', '300', '290'); 

mi piacerebbe calcolare la percentuale di employees che per il numero in surveys hanno preso il sondaggio. Ad esempio, come mostrato nei dati sopra, lo Awesome Group A sarebbe 0% e Awesome Group B sarebbe il 95%.

+0

Questa pratica 'GRUPPO BY' non deve essere utilizzato. Non è standard e produrrà risultati indesiderati. – Kermit

+0

dati di esempio e la tua ricerca desiderata forse? –

+0

Ecco la tabella così com'è: 'INSERISCI IN 'a_test' (' id', 'group_name',' employees', 'surveys') VALORI (1,' Awesome Group A ',' 100 ',' 0 '), (2, 'Impressionante gruppo B', '200', '190'), (3, 'Impressionante gruppo C', '300', '290'); ' Mi piacerebbe calulare la percentuale di "dipendenti" che per il numero in "sondaggi" hanno preso il sondaggio. IE come sopra l'Awesome Group A sarebbe 0% e Awesome Group B sarebbe il 95% – user2232709

risposta

43

provare questo

SELECT group_name, employees, surveys, COUNT(surveys) AS test1, 
     concat(round((surveys/employees * 100),2),'%') AS percentage 
    FROM a_test 
    GROUP BY employees 

DEMO HERE

+0

@ user2232709 modificato la mia risposta –

+0

Come posso usare l'alias della colonna qui? Come se calcolassi il valore dei dipendenti come "impiegati_tipo1 + dipendenti_tipo2 dipendenti AS, allora è possibile che io possa utilizzare gli alias dipendenti nella funzione concat?" –

+0

No non puoi, devi usare l'unione o la sottoquery. –

Problemi correlati