как разделить два подсчитанных значения с разными условиями Mysql - PullRequest
0 голосов
/ 15 марта 2020

я хочу сделать что-то вроде этого:

SELECT COUNT(is_available = 1) / COUNT(*) FROM users;

но условие is_available = 1 не отражает, что оно всегда дает результат "1"

Ответы [ 2 ]

0 голосов
/ 15 марта 2020

Предполагая, что is_available просто принимает два значения, 0 и 1, вы можете использовать:

SELECT AVG(is_available)
FROM users;

Если оно может принимать другие значения, отличные от NULL:

SELECT AVG(is_available = 1)
FROM users;

И, если вам действительно нужно считать NULL с, то вы можете использовать COALESCE() или:

SELECT SUM(is_available = 1) / COUNT(*)
FROM users;
0 голосов
/ 15 марта 2020

Используйте CASE. Например:

select
  sum(case when is_available = 1 then 1 else 0 end)
  /
  count(*) 
from users;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...