雇员表emp(empid,empname)和客户表cust(custid,custname,empid)是一对多的关系,如果想按照雇员所拥有的客户数量对雇员信息排序,这个sql语句应该怎么写?

解决方案 »

  1.   


    select empname,count(*) 
    from emp,cust
    where emp.empid=cust.empid
    order by 2 --按照查询出来的第二列排序
      

  2.   


    报错:
    select empname,count(*) from emp,cust where emp.empid=cust.empid order by 2
           *
    第 1 行出现错误:
    ORA-00937: 不是单组分组函数
      

  3.   


    SQL> select e.deptno deptno,count(e.ename) cnt
      2  from emp e,dept d
      3  where e.deptno=d.deptno(+)
      4  group by e.deptno;DEPTNO        CNT
    ------ ----------
        10          3
        20          5
        30          6
      

  4.   


    SQL> select e.deptno deptno,count(e.ename) cnt
      2  from emp e,dept d
      3  where e.deptno=d.deptno(+)
      4  group by e.deptno
      5  order by 2;DEPTNO        CNT
    ------ ----------
        10          3
        20          5
        30          6
      

  5.   


    加group by select empname,count(*)
    from emp,cust
    where emp.empid=cust.empid
    group by emp.empid,emp.empname   ----名字有可能重复,故按id,姓名分组
    order by 2 --按照查询出来的第二列排序