将多个聚合函数作为行返回

时间:2010-04-22 06:46:08

标签: sql mysql

我需要一些帮助来制定一个select语句。我需要选择具有不同颜色的每个部件的总发货量。所以结果应该是一个带有颜色名称和总数的行。

这是我的架构:

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)
  );

1 个答案:

答案 0 :(得分:0)

由于您的架构代表每个产品PNO只有一种颜色,所以我不确定您的问题实际需要什么。

按产品销售:

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

按颜色销售:

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

修改

要获得特定颜色的销售很容易:

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