как использовать «выбрать» для этой работы - PullRequest
2 голосов
/ 30 марта 2012

У меня есть таблица в базе данных sqlite, как показано ниже.


    id    status

    =============
    x     0
    y     1
    y     0
    x     1
    x     1 
    z     0

В качестве примера у меня есть 3 разных идентификатора со статусом (0/1), и x был найден в таблице 3 раза, при статусе = 0 в течение 1 раза, статус = 1 в течение 2 раз, y был найден в таблице 2 раза, с status = 0 в течение 1 раза и status = 1 в течение 1 раза.

, поэтому я хочу использовать 'select', чтобы получить следующий результат, есть ли способделать эту работу?любая помощь будет оценена.спасибо


    id     sum(status=0)     sum(status=1)   total(status)
    ========================================================
    x      1                  2              3
    y      1                  1              2
    z      1                  0              1

Ответы [ 2 ]

3 голосов
/ 30 марта 2012

Я считаю, что это должно работать:

SELECT id, 
    SUM(CASE WHEN status = 0 THEN 1 ELSE 0 END) AS SUM_STATUS_0, 
    SUM(CASE WHEN status = 1 THEN 1 ELSE 0 END) AS SUM_STATUS_1,
    SUM(status) AS SUM_STATUS
FROM TABLE
GROUP BY id
0 голосов
/ 30 марта 2012

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

select id,
  count(case when status = 0 then 1 end) Status0,
  count(case when status = 1 then 1 end) Status1,
  count(*) StatusAll
from t
group by id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...