有如下几个表(结构如下:)
1。商品销售表
 商品编号     售出日期
   0001       2002-02-01
   0003       2002-02-10
   0001       2003-02-01
   0002       2003-03-01
  ……   ……   ……
2。商品信息表
  商品编号    名称    大类ID     小类ID
   0001        a        1           3
   0002        b        1           4
   0003        c        2           1
  ……   ……     ……   ……
3。商品大类表
   大类ID     大类别
    1         电器
    2         食品
  ……   ……   ……
4。商品小类表
   小类ID    所属大类ID   小类别
    1           1          彩电
    2           1          冰箱
    3           2          蔬菜   ……   ……   ……  ……
问题一:要统计出一段时间内,各大类的销售数量,用饼图统计百分比。
        那么统计各大类销售数量的sql语句如何写?
问题二:统计各大类中各小类的销售数量,这个又如何写? 小弟初学,望指教!~~~100分献上。

解决方案 »

  1.   

    1、
    select 大类ID,大类别,count(1) 销售数量 from 商品销售表 a,商品信息表 b,商品大类表 c where a.商品编号=b.商品信息表 and b.大类ID=c.大类ID and a.售出日期 between '开始时间' and '结束时间' group by 大类ID,大类别
      

  2.   

    1、select b.大类ID,c.大类别,count(1) 销售数量 from 商品销售表 a,商品信息表 b,商品大类表 c where a.商品编号=b.商品信息表 and b.大类ID=c.大类ID and a.售出日期 between '开始时间' and '结束时间' group by b.大类ID,c.大类别2、select b.小类ID,c.大类别,count(1) 销售数量 from 商品销售表 a,商品信息表 b,商品小类表 c where a.商品编号=b.商品信息表 and b.小类ID=c.小类ID and b.大类ID='你的条件大类id' and a.售出日期 between '开始时间' and '结束时间' group by b.小类ID,c.大类别或:select b.小类ID,c.大类别,count(1) 销售数量 from 商品销售表 a,商品信息表 b,商品小类表 c where a.商品编号=b.商品信息表 and b.小类ID=c.小类ID and b.大类ID=(select 大类ID from 商品大类表 where 大类别='你的条件大类别') and a.售出日期 between '开始时间' and '结束时间' group by b.小类ID,c.大类别
      

  3.   

    1。以大类
    select b.大类ID,count(*) 销售数量 from 商品销售表 a,商品信息表 b,商品大类表 c where a.商品编号=b.商品编号 and b.大类ID=c.大类ID and a.售出日期 between '开始时间' and '结束时间' group by b.大类ID2。以小类
    select b.小类ID,count(*) 销售数量 from 商品销售表 a,商品信息表 b,商品小类表 c where a.商品编号=b.商品编号 and b.小类ID=c.小类ID and a.售出日期 between '开始时间' and '结束时间' group by b.小类ID我觉得你的商品销售表应该有一个数量字段,因为同一商品编号、日期很可能有数量大于一个的情况。如果这样就用sum来统计。