ВЕРНУТЬ СЧЕТ каждую строку вместо суммы или отдельной строки в POSTGRES - PullRequest
1 голос
/ 25 июля 2011

Я использовал варианты этого:

SELECT (select count(active) AS true 
        from sooper_entry 
        where active = 't' 
        and entry_id_ref = 28) AS true,
       (select count(active) AS false 
        from sooper_entry 
        where active = 'f' 
        and entry_id_ref = 28) AS false;

Таким образом, я могу получить СЧЕТ всех истинных и ложных значений, но мне нужно истинное число ложных значений, возвращаемое в ассоциативном массиве.

желаемый результат:

 true | false | uId 
------+-------+-----
   16 |     0 |  1
   10 |     2 |  3
   13 |    10 |  4
   19 |     8 |  5
   12 |     3 |  8
   21 |     0 | 12
(6 rows)

Ответы [ 2 ]

4 голосов
/ 25 июля 2011
SELECT 
  sum(case when active = 't' then 1 else 0 end) AS true, 
  sum(case when active = 'f' then 1 else 0 end) AS false, 
  entry_id_ref
FROM sooper_entry
GROUP BY entry_id_ref
1 голос
/ 25 июля 2011
SELECT  SUM(active::BOOLEAN::INT) AS active, 
        SUM((NOT active::BOOLEAN)::INT) AS inactive, 
        entry_id_ref
FROM    sooper_entry
GROUP BY
        entry_id_ref
...