2009-11-04 7 views
1

J'ai quelque chose comme ensemble de données,Groupe par SQLite sur un sous-ensemble d'un ensemble basé sur les éléments d'un autre sous-ensemble de l'ensemble

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 

Maintenant ce que je suis en train de faire est de résumer les valeurs de E où D a une valeur de b, mais seulement pour les éléments de B où C a une valeur de zzz. Donc, dans l'exemple ci-dessus, je regarde les valeurs 222, 888 et AAA, mais je ne m'intéresse pas à 555.

Je peux les additionner par groupe et somme en fonction de la valeur B pas de problème, mais que Je voudrais faire est somme basée sur C.

Mon code ressemble à ceci

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 

Ou quelque chose comme ça (il y a trois tables dans les jointures en cours aussi ...)

Est-ce que c'est compréhensible?

Répondre

1

À moins que je me manque quelque chose, cela devrait être ce que vous cherchez:

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 
Questions connexes