Предположим, что в Table1 есть столбец c1, для которого допустимые значения могут быть 1 или 0.
Как получить число 0, 1 с одним запросом? Возможно ли это?
извините, глупый способ допроса.
Я хотел получить ответ в одной строке, а не в одном столбце.
Это чтение одной таблицы / индекса.У подзапросов, скорее всего, будет два таких чтения
SELECT COUNT(CASE status WHEN 1 THEN 1 ELSE NULL END) AS Ones, COUNT(CASE status WHEN 0 THEN 1 ELSE NULL END) AS Zeros FROM MyTable
.. и он также переносим
Альтернативный способ;
select sum(c1) as ones, count(*) - sum(c1) as zeros from Table1
Если я правильно понимаю, просто GROUP BY этот столбец.
GROUP BY
SELECT c1, count(*) FROM Table1 GROUP BY c1;
Зависит от используемой вами СУБД. В оракуле возможно следующее:
select (select count(status) from table1 where status = 0) as status_0, (select count(status) from table1 where status = 1) as status_1 from dual
выберите UID из emp UID 0 0 0 1 1 1 1 0 0
выберите UID из emp
UID 0 0 0 1 1 1 1 0 0
select distinct (select count(uid) from emp where uid = 0) zeros_total, (select count(uid) from emp where uid = 1) ones_total from emp
O / P ** zeros_total5 one_total 4 **
Уже ответили, но всегда есть (почти) несколько способов сделать это. Союз двух запросов?
select count(*) from t1 where value='0' union select count(*) from t1 where value='1'