到目前为止,我有这个 SQL 查询,可以根据各种“性别”找到百分比
select (
(select count(*) from hw where DISCHARGE_STATUS = 'B')
/
count(*)
* 100
) as Percentage
from hw
假设我的 table 是
SEX DISCHARGE STATUS
1 A
1 B
2 B
2 B
2 B
出院 B 的百分比为 80%/100% 总数:所有性别
现在假设我需要以相同的方式找到百分比,但将其分类为性别类型 1 和 2 1 为总计数的 20/100%:对于性别类型 1 和放电类型 B 2 为总计数的 60/100%:对于性别类型 2 和放电类型 B
我尝试在查询末尾添加 GROUP BY SEX,但这没有帮助,我该怎么办?
提前致谢:)
最佳答案
您可以一次性执行此操作并使用 SUM 获取子计数,而不是查询硬件两次:
select
count(*) as count_total,
sum(discharge_status = 'B') as count_b,
sum(sex = 1) as count_sex1,
sum(discharge_status = 'B' AND sex = 1) as count_b_sex1
from hw;
(在 MySQL 中,结果为 TRUE 的表达式为 1,结果为 FALSE 的表达式为 0。因此,您对每个匹配记录求和 1。换句话说:您进行计数。)
然后做任何你想做的数学运算:
select
sum(discharge_status = 'B' AND sex = 1) /
sum(discharge_status = 'B') * 100 as percent_sex1_in_b
from hw;
(在这个仅使用状态 B 计数的简单示例中,您当然可以将 discharge_status = 'B'
移至 WHERE 子句。)
关于mysql - SQL查询和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26686469/