题目1:
  表a:
      字段:  name   a  b  c  d  要求:查询显示结果为  name   sum(abcd)
题目2:
  表a:
      字段: name   age   salary  要求:查询年龄最大 但工资最低的员工名字(年龄有相同的,工资也是,符合两件的两个员工,则同时显示)

解决方案 »

  1.   

    1 sum 要处理的 是数字类型啊
     能否说一下你 这个是 做什么用的
    难道是 abcd 四个字符连接在一起??2 order by(age,salary)
    不知道哪种效果?
      

  2.   

    第一題
    WITH t AS(
    SELECT 'simon'NAME,100 a,200 b,300 c,400 d FROM dual
    UNION ALL
    SELECT 'angela',100,100,100,200 FROM dual
    )
    --不按name分组
    SELECT NAME,a+b+c+d FROM t
    --按name分组
    SELECT NAME,Sum(a+b+c+d) FROM t GROUP BY NAME
    第二題不曉得咋理解,比如A的年齡35,工資5000,B的年齡30,工資4000,應該選哪個?
      

  3.   

    [Quote=引用 1 楼  的回复:]
    1 sum 要处理的 是数字类型啊
     能否说一下你 这个是 做什么用的
    难道是 abcd 四个字符连接在一起??这个怪我没说清楚  , a b c d  就当做是4门课的成绩,sum(abcd) 就相当于总成绩的意思
      

  4.   

    這樣
    WITH t AS(
    SELECT 'simon'NAME,30 age,4000 salary FROM dual
    UNION ALL 
    SELECT 'jack'NAME,30 age,4500 salary FROM dual
    UNION ALL 
    SELECT 'rola'NAME,30 age,4000 salary FROM dual
    UNION ALL 
    SELECT 'angela'NAME,25 age,4000 salary FROM dual
    )
    SELECT NAME,age,salary FROM 
    (
      SELECT NAME,age,salary,DENSE_RANK() over (PARTITION BY age ORDER BY age DESC,salary)rn FROM t
    )WHERE rn=1;NAME AGE SALARY
    angela 25 4000
    simon  30 4000
    rola   30 4000
      

  5.   

    今天对LZ的题目理解完全乱套了,嘿嘿
    SELECT NAME,age,salary FROM 
    (
      SELECT NAME,age,salary,DENSE_RANK() over (ORDER BY age DESC,salary)rn FROM t
    )WHERE rn=1;
      

  6.   


    1.SELECT NAME,Sum(a+b+c+d) FROM a1 GROUP BY NAME
    2.select * from a2 where exists(select 1 from (select max(age) as ages,min(salary) as salarys from 
    a2) z where z.ages=a2.age and z.salarys=a2.salary)
      

  7.   

    with t as 里面的语句的意思 能解释一下吗?
    另外  rn=1是什么意思?是只显示一行结果吗? 但是符合条件的两条数据都查出来了啊,谢谢点拨一下!
      

  8.   

    with as table()..创建临时表
    rn=1,是先利用DENSE_RANK()函数按年龄倒序工资升序排名,取排名第一的资料
    这些语法的东西LZ可自行查阅资料应该都很容易查到..
      

  9.   

    晕,第一题很简单,没那么复杂吧?用不到SUM的,直接a+b+c+d不就可以了
        select name,a+b+c+d from a;题二:
        select name,age,salary from a where
            age=(select max(age) from a)
            and salary=(select min(salary) from a);