我想计算按州分组的成功申请数量的百分比。
我正在使用mySQL,可以运行查询以获取状态列表,其中包含应用程序总数和成功应用程序的数量。我不确定如何组合两个查询,然后尝试计算百分比值。我假设我必须在这里运行某种子查询,但不太确定。
SELECT w.state, c.case_status, COUNT(w.state) AS No_Applications
FROM worksites w JOIN cases c USING (WorksiteID)
WHERE c.Case_Status like '%certified%'
GROUP BY w.state
ORDER BY w.state ASC;
SELECT w.state, COUNT(w.state) AS No_Total_Applications
FROM worksites w JOIN cases c USING (WorksiteID)
GROUP BY w.state
ORDER BY w.state ASC;
SELECT w.state, c.case_status, COUNT(w.state FROM worksites w JOIN cases c WHERE c.Case_Status like '%certified%') AS Success_Applications,
COUNT (w.state) AS Total_Applications
FROM worksites w JOIN cases c USING (WorksiteID)
GROUP BY w.state
ORDER BY No_Applications ASC;
前两个代码分别返回成功申请和总数的数量;第三个代码是我的尝试,并将两者合并-失败,提示“错误代码:1064。您的SQL语法有错误;请查看与您的MySQL服务器版本相对应的手册,以获取在'FROM worksite附近使用的正确语法w在第1行的C处c.Case_Status处,例如'%certified%')AS成功'。
答案 0 :(得分:0)
您无需将2个查询连接在一起,只需扩展查询即可使它计算已认证的数量,而无需过滤整个表
function exerciseThree(str) {
var length = str./*some magic here which i'll leave up to you :)*/;
return length;
}
答案 1 :(得分:0)
在MySQL中,您可以简单地执行以下操作:
SELECT w.state,
SUM(c.Case_Status like '%certified%') AS No_Applications
AVG(c.Case_Status like '%certified%') as ratio
FROM worksites w JOIN
cases c
USING (WorksiteID)
GROUP BY w.state
ORDER BY w.state ASC;
MySQL将布尔值视为数字上下文中的数字,从而简化了使用它们的算术运算。
还要注意,我从Case_Status
中删除了SELECT
。它不是GROUP BY
的一部分,因此它并不是真正合适的(每个w.state
会有多个值)。
答案 2 :(得分:-1)
有关计算百分比的信息,请参阅: How to calculate percentage with a SQL statement
祝你好运!