假设有2个表,users和groups,
table users                                     table groups
------------------                            -------------------------
name    point                                    name group
(名字)    (分数)                                    (名字)  (部门)
1)用一句sql找出分数最高者所在的部门
2)用一句sql找出平局分数最高的部门另:假设一个表里有销售量(count)和时间2个字段(date),时间假如说是20040101-20060601
如何按月查询每月的销售量?

解决方案 »

  1.   

    1):select a.group
    from groups a,users b
    where a.name = b.name
     and  b.point = (select max(point) from users)
    2):with aaa as (select b.group,max(avg(a.point))
                    from users a,groups b
                    where a.name = b.name
                    group by b.group)
       select bbb.group
       from   group bbb,aaa
       where  aaa.group = bbb.group
    3):select sum(nvl(count,0)) from table
       group by date
      

  2.   

    可否稍微解释一下?
    1)a b 都是什么?
      写成这样行吗?
      select group from groups where users.name=groups.name and point=max(point);
    2)with aaa as什么意思?
      aaa bbb是什么?
      注:表名就叫users 和 groups
          表users 有2个字段name point
          表groups有2个字段name group
    3)能不能解释一下sum(nvl(count,0))这个函数的意思?小弟新手,希望多多指点,因为急着用,来不及看书了,一定会补上,希望先帮忙解答一下!
      

  3.   

    1)a b是表的别名,就像人的小名一样
    你的写法不对 
    2)with aaa as ...你可以理解为创建了一个临时表,表名aaa
      bbb也是表的别名
    3)nvl(count,0)是如果count为空则赋值为0,sum是求和函数
      

  4.   

    第三个语句那个group by date为什么是按月差?为什么不是按天差?
    因为date的格式为yyyymmdd
      

  5.   

    如果你date的格式是yyyymmdd,那就是按照天查
    如果是yyyymm,是按月查
    如果是yyyy是按年查
      

  6.   

    对呀,楼上的大侠,我的日期格式就是YYYYMMDD,不过题目是按月查?这个我不会做
      

  7.   

    group by substr(to_char(date,'yyyymmdd'),0,6)
      

  8.   

    TO IMGUOXIN
    1)a b 都是什么?
      写成这样行吗?
      select group from groups where users.name=groups.name and point=max(point);不能这样写,users.name和groups.name在多表引用中只能用别名,所以一定要起个别名,用a.name和b.name来限制
      

  9.   

    1):select a.group
       from groups a,users b
       where a.name = b.name
       and  b.point = (select max(point) from users)
    2):with aaa as (select b.group,max(avg(a.point))
                    from users a,groups b
                    where a.name = b.name
                    group by b.group)
       select bbb.group
       from   group bbb,aaa
       where  aaa.group = bbb.group
    3):select sum(nvl(count,0)) from table
       group by substr(to_char(date,'yyyymmdd'),0,6)