MySQL查詢(xún)成績(jī)百分比是一個(gè)通用性很高的問(wèn)題
這里我們給出一種簡(jiǎn)單高效的方法
SELECT score, 100 * COUNT(*) / ( SELECT COUNT(*) FROM score ) AS percentage FROM score GROUP BY score ORDER BY score DESC;
上述代碼將返回一個(gè)結(jié)果集,其中每一行表示不同的分?jǐn)?shù)值以及這個(gè)分?jǐn)?shù)所占的百分比
該查詢(xún)語(yǔ)句將score表按照分?jǐn)?shù)進(jìn)行分組,并計(jì)算每個(gè)分?jǐn)?shù)所占的百分比
其中分子是該分?jǐn)?shù)值在score表中出現(xiàn)的次數(shù),分母是score表中的記錄總數(shù)
最后按照分?jǐn)?shù)逆序排序,輸出結(jié)果
可以根據(jù)實(shí)際需求對(duì)查詢(xún)結(jié)果加以調(diào)整
SELECT CONCAT(score, '分 ') AS score, CONCAT(percentage, '%') AS percentage FROM ( SELECT score, 100 * COUNT(*) / ( SELECT COUNT(*) FROM score ) AS percentage FROM score GROUP BY score ORDER BY score DESC ) AS sub;
上述代碼將結(jié)果集中的score和percentage字段拼接成標(biāo)準(zhǔn)輸出格式
其中score字段加上'分 '后綴,percentage字段加上'%'后綴
這是更符合實(shí)際需要的輸出格式