首页 > 解决方案 > MYSQL按组获取计数百分比

问题描述

你好我有一个看起来像这样的数据库

------------------
| Tag   |  Value |
------------------
| A     | Passed |
| A     | Failed |
| B     | Failed |
| A     | Failed |
| B     | Failed |
------------------

我正在尝试编写一个查询来获取每种类型通过的百分比

输出示例:

A: 33%
B: 50%

到目前为止,我尝试了多个查询,但我得到的最接近的结果是:

SELECT Tag, ((SELECT COUNT(*) FROM TABLE WHERE value= 'Passed') / Count(*)) * 100 AS 'Percentage to all Passed' FROM Table WHERE Value= 'Passed' GROUP BY Tag;

但我得到的结果不正确

对此有什么帮助吗?

标签: mysqlcountsubquery

解决方案


你可以使用交叉连接

SELECT Tag
       , count(*)/t.tot
FROM my_table m  

cross  join  (
    select count(*) tot
    from my_table 
) t
where m.value  ='passed'

推荐阅读