簡體   English   中英

使用 SQL,如何計算具有特定值的行的百分比?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM