2010-09-28 3 views
1

Я использую PostgreSQL.
У меня есть данные в таблице как:Подведите итог таблицы

Parent_id  Count  Read 
---------  ------ ------ 
52405   2   False 
52405   1   True 

Теперь я хочу, чтобы суммировать данные, такие как:

Parent_id  Count  Read 
---------  ------ ------ 
52405   3   False 

Count бы быть сумма записей.
Read будет логическим оператором И.

ответ

3
SELECT 
    "Parent_id", 
    SUM("Count"), 
    bool_and("Read") 
FROM 
    tablename 
GROUP BY 
    "Parent_id"; 

я использовал двойные кавычки "из-за незаконных имен столбцов и использование верхнего регистра в именах.

+0

которые DBMS'es поддерживают его? Никогда не слышал об этом, и Google не help – zerkms

+1

PostgreSQL: http://www.postgresql.org/docs/current/interactive/functions-aggregate.html И теперь я вижу, что этот тег помечен для других dbms's ... –

0
SELECT Parent_id, 
     s, 
     CASE WHEN logical_sum = cnt 
      THEN 'True' 
      ELSE 'False' 
     END 
    FROM (SELECT SUM("Count") as s, 
       SUM(CASE WHEN "Read" = 'True' 
         THEN 1 
         ELSE 0 
        END) AS logical_sum, 
       COUNT(*) AS cnt 
      FROM tbl 
     GROUP BY Parent_id) x 
Смежные вопросы