MySQL在同一个表上合并查询

时间:2014-02-28 19:17:33

标签: php mysql

我想做的就是这个

我的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 */

这是最基本的,但不是我想要做的。我需要通过和失败百分比。我怎么做到的?

3 个答案:

答案 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