mysql - SQL查询和计数

标签 mysql sql math count

到目前为止,我有这个 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/

相关文章:

mysql工作台从其他数据库中选择

c - 用 C 求解 2 的 200 000 次方

math - 对齐 IMU 方向,然后获得相对旋转

mysql - 是否有任何支持空间数据操作的 mysql 空间 gui 管理器?

mysql - 使用 MySQL 进行严格的数据验证

java - Mybatis迁移工具在一个事务中运行多条mysql语句

C# Foreach 与 MySQL

防止注入(inject)的 C# 字符串参数?

mysql - 将字符串连接到 SELECT * MySql

python - 如何找到恰好有六个 1 和其余 0 的所有 32 位二进制数