2013-04-01 32 views
20

4 öğe içeren bir MySQL veritabanım var: id (sayısal), group_name, employees ve surveys.MySQL Hesapla Yüzde

Benim SELECT'umda 'anketler' içindeki sayıyla anketi alan 'çalışanların yüzdesini hesaplamam gerekiyor.

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'); 

kim var surveys yılında sayısına göre employees yüzdesini hesaplamak isteriz: Bu haliyle Burada

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

tablodur:

Bu

Şimdi sahip ifadesi ankete alındı. Örneğin, yukarıdaki verilerde gösterildiği gibi, Awesome Group A,% 0 ve Awesome Group B,% 95 olacaktır.

+0

Bu 'GRUP BY' uygulama kullanılmamalıdır deneyin. Standart dışıdır ve istenmeyen sonuçlar doğurur. – Kermit

+0

örnek veriler ve sizin istediğiniz reslut belki? –

+0

Şu anki tablo şu şekildedir: '' INSERT INTO 'a_test' (' id', 'group_name',' çalışanları', anketler') VALUES (1, 'Awesome Group A', '100', '0'), (2, 'Awesome Group B', '200', '190'), (3, 'Awesome Group C', '300', '290'); ' 'Çalışanların' yüzdesini 'anketler' içindeki sayıya göre ankete katmayı çok isterim. Awesome Group A gibi IE% 0 ve Awesome Group B% 95 olur – user2232709

cevap

43

bu

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 cevabımı düzenledim –

+0

Sütun takma adını burada nasıl kullanabilirim? Çalışanların "staff_type1 + employee_type2 AS çalışanı gibi" değerini hesaplarsam, o zaman çalışanların takma işlevini orada kullanabilir miyim? –

+0

Hayır yapamazsınız. Birleştirme veya alt sorguyu kullanmanız gerekir. –