2010-04-22 9 views
0

J'ai besoin d'aide pour formuler une instruction select. Je dois sélectionner la quantité totale expédiée pour chaque pièce avec une couleur distincte. Le résultat devrait donc être une ligne avec le nom de la couleur et le total.Retour de plusieurs fonctions d'agrégat en tant que lignes

Voici mon schéma:

create table s 
    (sno char(5) not null, 
    sname char(20) not null, 
    status smallint, 
    city char(15), 
    primary key (sno) 
); 
create table p 
    (pno char(6) not null, 
    pname char(20) not null, 
    color char(6), 
    weight smallint, 
    city char(15), 
    primary key (pno) 
); 
create table sp 
    (sno char(5) not null, 
    pno char(6) not null, 
    qty integer not null, 
    primary key (sno, pno) 
); 
+0

Aussi, je ne pense pas que les UNIONs soient autorisées pour cet exemple. – SDLFunTimes

Répondre

0

En tant que votre schéma se tient chaque produit PNO n'a qu'une seule couleur, donc je ne suis pas sûr de votre question, il faut en fait.

Ventes par produit:

select p.pno 
     , sum (sp.qty) 
from p join sp on (p.pno = sp.pno) 
group by p.pno; 

Ventes de couleur:

select p.color 
     , sum (sp.qty) 
from p join sp on (p.pno = sp.pno) 
group by p.color; 

modifier

Pour obtenir des ventes pour une couleur spécifique est facile:

select sum (sp.qty) 
from p join sp on (p.pno = sp.pno) 
where p.color = 'BLUE'; 
+0

Je veux dire de tous les envois faits sur sp somme ceux qui correspondent à la même couleur et retournent chaque quantité additionnée. – SDLFunTimes

Questions connexes