2009-11-04 3 views
1

У меня есть набор данных что-то вроде этогоГруппировка в SQLite через один подмножество множества на основе элементов другого подмножества множества

A  | B  | C   | D  | E 
----------------------------------------------- 
1  | Carrot | <null> | a  | 111 
2  | Carrot | <null> | b  | 222 
3  | Carrot | zzz  | c  | 333 
4  | Banana | <null> | a  | 444 
5  | Banana | <null> | b  | 555 
6  | Banana | <null> | c  | 666 
7  | Grape | <null> | a  | 777 
8  | Grape | <null> | b  | 888 
9  | Grape | zzz  | c  | 999 
10  | Carrot | <null> | a  | 000 
11  | Carrot | <null> | b  | AAA 
12  | Carrot | zzz  | c  | BBB 

Теперь то, что я пытаюсь сделать, это суммировать значения E, где D имеет значение b, но только для тех элементов в B, где C имеет значение zzz. Таким образом, в приведенном выше примере я смотрю на значения 222, 888 и AAA, но меня не интересует 555.

Я могу суммировать их по группам и сумме на основе значения B без проблем, но что Я хотел бы сделать, это сумма на основе С.

Мой код выглядит примерно так

select B, 
     (select sum(E) as duty_payable 
      from table table_alias_b 
     where D = "b" 
      and table_alias_b.B = table_alias_a.B) 
    from table table_alias_a 
where table_alias_b.B in (select B 
          from table 
          where (C = 'zzz')) 
group by B 

Или что-то подобное (есть присоединяется через три таблицы происходит тоже ...)

Это вообще понятно?

ответ

1

Если я что-то отсутствует, это должно быть то, что вы ищете:

SELECT t.b_column, 
     SUM(t.e_column) 
    FROM TABLE t 
    WHERE t.d_column = 'b' 
    AND t.c_column = 'zzz' 
GROUP BY t.b_column 

 Смежные вопросы

  • Нет связанных вопросов^_^