如何写Oracle分组查询语句

2019-03-25 13:35|来源: 网路

如何写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号,但是如何根据进货人分组查询呢?

相关问答

更多
  • 如何写培训简报[2024-01-10]

    很简单啊,先下个简报样板,然后填内容,内容一般分成:前言,存在问题(即培训必要性和出发点),具体措施,取得成效,结束语。你要是需要的话,留个邮箱,我发个我写的给你看看,在这发出来不太好。
  • SELECT sum(bednumber)-sum(guestnumber) as 剩余 from room group by blockID 试了一下应该是你想要的结果
  • $arr = new Array("1","2","3"); $sql = "select * from tab where id>".$arr[0]." and id<>".$arr[2]; 简单举了个例子
  • $sql="select * from user where idate>'2007-03-21 01:55:36'" dim sert sert=cdate("2007-03-21 01:55:36" ) $sql="select * from user where idate>" & sert & ""
  • 用union,举例有S1表(a,b,c,d)和S2表(a,c,d,e)和S3表(f,g),里头的字段不同,但在逻辑上有关系 (如有 s1.b=s2.e s1.a=s3.f s1.b=s3.g) 示例如下: ------------------------------------------------------------------------------ select S1.a as x,S1.b as y,S1.c as z from S1 union select S2.a as x,S2.e a ...
  • oracle数据库的分组查询语句,主要是根据一个字段,使用关键字group by来分组,如下代码: select to_char(date_column, 'yyyy-Q'),count(*) from xxx where date_column between '01-Jan-2007' and '31-Dec-2009' group by to_char(date_column, 'yyyy-Q')//分组查询
  • 1,在select 语句中可以使用group by 子句将行划分成较小的组,一旦使用分组后select操作的对象变为各个分组后的数据,使用聚组函数返回的是每一个组的汇总信息。 使用having子句限制返回的结果集。group by 子句可以将查询结果分组,并返回行的汇总信息Oracle 按照group by 子句中指定的表达式的值分组查询结果。 2,在带有group by 子句的查询语句中,在select 列表中指定的列要么是group by 子句中指定的列,要么包含聚组函数 select max(sal) ...
  • 最好是拆开来使用,比如数据里面有1,2,3 你要查询 1,3 就写find_in_set('1',ids) and find_in_set('2',ids); 如果你只是查询2 就直接 where find_in_set('2',ids); 如果是完全要相等 就直接写等于啊,如果只是需要包含就用上面的、
  • 好像是标准SQL吧,就这么写啊。不过大表可不能这么做哦,太占资源了。 补充: Oracle里面有“+”的,不过我怀疑你是不是要拼两个字符串。正统数据库,包括Oracle和DB2拼接字符串都是采用双竖线“||”,加号只能用于使两个整型或者浮点型数值相加。 这需要看你的相关字段的类型的。如果是数值型,需要首先转换为字符型,再合并,例如: select * from a where to_char(col001)||to_char(col002) not in (select to_char(col001)||t ...