如何写Oracle分组查询语句

如何写Oracle分组查询语句:
商品类型表(goodsType):类型编号(id)、类型名称(typeName)

进货表(buyInfo):进货单编号(Id)、类型编号(goodsTypeId)、商品名(goodsName)、数量(goodsNum)、进货日期(buyDate)、进货人(buyMan)、供应商(supplier)、单价(price)、总价(totlePrice)

想分别根据商品类型或者进货人分组统计查询得到:商品类型、商品名称、商品数量以及商品总数量。


例如:根据商品类型

商品类型  商品名称  数量    sum(goodsnum)
  电脑      联想     10
  电脑      戴尔     10          30
  电脑      宏基     10
  手机      苹果     20
  手机      诺基亚   10          35
  手机      摩托罗拉 
  相机       三星     10         10



第二种:根据进货人
进货人     进货类型    商品名称     商品数量    sum(goodsnum)
张三        电脑       IBM           20
张三        电脑       戴尔          10   
张三        相机       三星          20            80
张三        手机       苹果          10
张三        U盘       朗科          20  
李四        电脑       IBM           20
李四        电脑       戴尔          10   
李四        相机       三星          20            80
李四        手机       苹果          10
李四        U盘       朗科          20   
下面这个文件里有两张表,

还有,就是能不能直接根据商品类型或者进货人或者日期排序查询得到所有的信息,我试了,只有商品类型可以,应为他有对应的Id号,但是如何根据进货人分组查询呢?

对于第一个:
[code="java"]
select g.typeName,t.goodsname,t.goodsNum,t.sum
from (select goodsTypeId,goodsname, goodsNum,sum(goodsnum) over(partition by goodsTypeId) sum from buyinfo) t inner join goodsType g
on g.id=t.goodsTypeId
[/code]

对于第2个:
[code="java"]
select t.buyMan, g.typename, t.goodsName, t.goodsNum, t.sum
from (select buyMan,
goodsTypeId,
goodsName,
goodsNum,
sum(goodsnum) over(partition by buyMan) sum
from buyInfo)t inner
join goodsType g on g.id = t.goodsTypeId
[/code]
主要用了oracle的开窗函数 over(partition by 。。。)

把表机构图贴出来,机器木有oracle

晕 你用的11G 无法导入10G