嘗試此查詢
SELECT tblcontacts.ContactFullName AS Advisor,
COUNT(tblcases.CaseID) AS Cases,
(COUNT(tblcases.CaseID)*100)/(SELECT COUNT(A.CaseID) FROM tblcases AS A) as Percentage
FROM tblcases
INNER JOIN tblcontacts ON tblcontacts.ContactID = tblcases.ContactAssignedTo
GROUP BY tblcontacts.ContactFullName
考慮數據庫的架構和數據。
CREATE TABLE IF NOT EXISTS tblcases
( CaseID
INT(11)NOT NULL AUTO_INCREMENT, ContactAssignedTo
INT(11)NOT NULL, PRIMARY KEY(CaseID
) )ENGINE = InnoDB的默認字符集= LATIN1 AUTO_INCREMENT = 21;
INSERT INTO tblcases
(CaseID
,ContactAssignedTo
)VALUES (1,1),(2,1),(3,1),(4,1),(5,2),(6,2), (7,3),(8,3),(9,3),(10,3),(11,4),(12,4),(13,5),(14,5),(15 ,5),(16,6),(17,7),(18,7),(19,8),(20,8);
CREATE TABLE IF NOT EXISTS tblcontacts
( ContactID
INT(11)NOT NULL AUTO_INCREMENT, ContactFullName
VARCHAR(64)NOT NULL, PRIMARY KEY(ContactID
) )ENGINE = InnoDB的默認字符集= LATIN1 AUTO_INCREMENT = 7;
INSERT INTO tblcontacts
(ContactID
,ContactFullName
)VALUES(1, '阿米特1'),(2, '阿米特2'),(3, '阿米特3'),(4, '阿米特4'),( 5,'amit 5'),(6,'amit 6');
結果會是這樣的,這對數據庫中上面的數據是正確的。
顧問例百分比
阿米特1 4 20。0000
阿米特2 2 10.0000
阿米特3 4 20.0000
阿米特4 2 10.0000
阿米特5 3 15.0000
阿米特6 1 5.0000
非常感謝閃電快速回復非常感謝,這正是我所需要的,你知道如果實現這個結果也可能在PHP?我只問,因爲我前面的一些疑問已經有多個選擇&是相當複雜的[無論如何!]。再次感謝您的努力 – gary 2012-07-05 09:36:51
您可以在PHP中通過將每個顧問程序的總數添加到腳本中的一個變量中(例如在填充數組的同時),然後在顯示屏中添加一個百分比列$陣列[advisorTotal]/$ overallTotal。 – Fluffeh 2012-07-05 09:40:03
如果你發佈你的PHP代碼,我可以爲你修改它btw。 – Fluffeh 2012-07-05 09:55:30