Как совместить два подсчета запросов с их соотношением? - PullRequest
5 голосов
/ 28 марта 2011

У меня есть два запроса:

select count(*) from my_table where status="accepted"

и

select count(*) from my_table where status="rejected"

Мне нужно было найти соотношение «принято / отклонено», поэтому мне было интересно, возможно ли объединить два запроса, чтобы мне не приходилось выполнять два запроса

Ответы [ 5 ]

5 голосов
/ 28 марта 2011

Положив этот ответ, так как ни один из предложенных до сих пор является правильным

select count(case when status = "accepted" then 1 end) /
       count(case when status = "rejected" then 1 end) as Ratio
from my_table
where status in ("accepted","rejected")

Если вам также нужны отдельные подсчеты

select count(case when status = "accepted" then 1 end) Accepted,
       count(case when status = "rejected" then 1 end) Rejected,
       count(case when status = "accepted" then 1 end) /
       count(case when status = "rejected" then 1 end) as Ratio
from my_table
where status in ("accepted","rejected")

Примечание: MySQL не имеет деления наноль проблем.Возвращает NULL, когда отклонено равно 0.

2 голосов
/ 28 марта 2011
select accepted_count, rejected_count, accepted_count/rejected_count ratio
from (
    select sum(CASE WHEN status="accepted" THEN 1 ELSE 0 END) accepted_count,
           sum(CASE WHEN status="rejected" THEN 1 ELSE 0 END) rejected_count
    from my_table 
    ) A
1 голос
/ 28 марта 2011
select status, count(*) from my_table 
where status in ("rejected", "accepted")
group by status;
1 голос
/ 28 марта 2011

Я думаю, что это будет работать:

SELECT (Select count(*) from my_table where status="accepted") / (select count(*) from my_table where status="rejected") AS ratio
0 голосов
/ 28 марта 2011
select sum(case when status='accepted' then 1 else 0 end) as AcceptedCount,
       sum(case when status='rejected' then 1 else 0 end) as RejectedCount
    from my_table
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...