假设我有一个联系人管理系统。员工每次联系都有相关说明。
所以,这是我的简单例子:
ContactName, NoteCount
John, 100
Rob, 10
Amy, 10
Chris, 10
我怎么知道75%的联系人有10个与之相关的笔记,25%的联系人有100个与之相关的笔记?
请解释我在Layman的条款中要做的事情。
答案 0 :(得分:4)
如果你真的想要拥有确切数字的人的百分比,请使用:
SELECT
NoteCount,
COUNT(*) ContactsWithThisNoteCount,
COUNT(*) / (SELECT COUNT(*) FROM Contacts) PercentageContactsWithThisNoteCount
FROM
Contacts
GROUP BY
NoteCount
如果您想要“0-9”,“10-99”和“100+”之类的灌木,那么您只需要在组和MIN / MAXon NoteCount中进行一些计算。
答案 1 :(得分:1)
select
((countTen/countTotal)*100) as percentTen,
((countHundred/countTotal)*100) as percentHundred
FROM (
select
cast(sum(case when noteCount <= 10 then 1 else 0 end) as float) as countTen,
cast(sum(case when noteCount <= 100 and > 10 then 1 else 0 end) as float) as countHundred,
cast(count(*) as float) as countTotal
from
contacts
) temp
应该没问题,当我需要对过滤器进行计数时,我经常使用技巧sum + case