[英]With SQL, how do I calculate what percentage of rows have a certain value?
我正在使用 PHP/MySQL 制作一個顯示比賽結果的網站。 我想顯示 10 場最困難的比賽的統計數據,即大多數人 DNF 的比賽。 我是這樣做的:
select raceid,race.name,race.location,race.date,count(result.raceid) as dnfs
from result
inner join race on result.raceid=race.id
where result.place=0
group by result.raceid
order by dnfs desc limit 10
但這並沒有考慮到比賽中的人數。 我將如何修改查詢以返回percentDNF(dnfs/totalracers)並按該列排序? 一個地方=0 表示 DNF。
刪除WHERE
子句並使用CASE
語句來計算未完成值。 然后除以總賽車手。 像這樣的東西:
SELECT result.raceid, race.name, race.location, race.date,
COUNT(result.raceid) AS TOTAL,
SUM(CASE WHEN result.place = 0 THEN 1 ELSE 0 END) AS DNF,
SUM(CASE WHEN result.place = 0 THEN 1 ELSE 0 END) /
COUNT(result.raceid) AS PCT_DNF
FROM result
JOIN race ON result.raceid=race.id
GROUP BY result.raceid, race.name, race.location, race.date
ORDER BY SUM(CASE WHEN result.place = 0 THEN 1 ELSE 0 END) /
COUNT(result.raceid) DESC LIMIT 10
我不知道它是否適用於 MySQL,在 SQL Server 中它可以是:
select ((select count(*) from tbl where criterie) * 100) / (select count(*) from tbl)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.