Упростите SQL-запрос в SQL-оператор - PullRequest
0 голосов
/ 09 декабря 2011

tblticket

статус выдачи удостоверения личности
1 тест 1
2 тест 2
3 тест 3

iхочу найти количество на основе статуса 1,2,3 и т. д.

я пишу 3 sql устава следующим образом

выберите количество (*) из заявки, где статус = 1
выберите количество(*) из заявки, где статус = 2
выберите количество (*) из заявки, где статус = 3

любой способ упростить это в один запрос

Ответы [ 2 ]

4 голосов
/ 09 декабря 2011

Простой ответ:

select count(*), status
from ticket
group by status

Однако это дает разные результаты, если у вас нет строк для состояния, поскольку описанное здесь поведение: Всегда ли COUNT (*) возвращает результат?

Если предположить, что вы сделали бы только 3 значения статуса:

select count(t.status), s.status
from
   (SELECT 1 AS status UNION  ALL SELECT 2 UNION  ALL SELECT 3) s
   LEFT JOIN
   ticket t ON s.status = t.status 
group by
   s.status

.. или с отдельной таблицей поиска статуса:

select  count(t.status), s.status
from
   (SELECT DISTINCT status FROM status) s
   LEFT JOIN
   ticket t ON s.status = t.status 
group by
   s.status
3 голосов
/ 09 декабря 2011
SELECT status, COUNT(*)
FROM tblticket
GROUP BY status

Если вы действительно хотите только эти три статуса, вы также можете сделать:

SELECT status, COUNT(*)
FROM tblticket
WHERE status IN (1, 2, 3)
GROUP BY status
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...