我想做的就是这个
我的id号和条件列的值为0或1。我想得到那些百分比。
SELECT COUNT(id) FROM table; /* ALL COUNT */
SELECT COUNT(id) FROM table WHERE criteria='1' /* pass count */
SELECT COUNT(id) FROM table WHERE criteira='0' /* fail count */
这是最基本的,但不是我想要做的。我需要通过和失败百分比。我怎么做到的?
答案 0 :(得分:3)
使用COUNT()
和SUM()
尝试使用条件也使用聚合函数而不进行分组然后将导致一行,带条件的sum将返回为boolean所以如果conditon匹配则结果为true并且将起作用作为计数
SELECT COUNT(id) `all`
,SUM(criteria='1') `pass`
,SUM(criteria='0') `fail`
FROM `table`
答案 1 :(得分:0)
与其他帖子几乎相同,但我认为使用IF
是不可避免的!
SELECT
COUNT(*) AS `count`
, SUM(IF(criteria='1', 1, 0)) AS `pass`
, SUM(IF(criteria='0', 1, 0)) AS `fail`
FROM `table`
答案 2 :(得分:0)
以下是SQL fiddle
SELECT
ROUND((SUM(CASE WHEN CRITERIA = '1' THEN 1 ELSE 0 END)/SUM(1)) * 100, 2) AS PASS_PCT,
ROUND((SUM(CASE WHEN CRITERIA = '0' THEN 1 ELSE 0 END)/SUM(1)) * 100, 2) AS FAIL_PCT
FROM SAMPLE