请教一个sql语句

redcoconut 2011-04-14 05:01:07
雇员表emp(empid,empname)和客户表cust(custid,custname,empid)是一对多的关系,如果想按照雇员所拥有的客户数量对雇员信息排序,这个sql语句应该怎么写?
...全文
114 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
陈字文 2011-04-14
  • 打赏
  • 举报
回复

select a.empname,a.empid
from emp a,cust b
where a.empid=b.empid
group by a.empname,a.empid
order by count(b.empid)
/*
SELECT STATEMENT, GOAL = ALL_ROWS 耗费=7 基数=4 字节=312 CPU 耗费=14566013 IO 耗费=4 时间=1
SORT ORDER BY 耗费=7 基数=4 字节=312 CPU 耗费=14566013 IO 耗费=4 时间=1
HASH GROUP BY 耗费=7 基数=4 字节=312 CPU 耗费=14566013 IO 耗费=4 时间=1
HASH JOIN 耗费=5 基数=4 字节=312 CPU 耗费=2925893 IO 耗费=4 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=EMP 耗费=2 基数=2 字节=130 CPU 耗费=7461 IO 耗费=2 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=CUST 耗费=2 基数=4 字节=52 CPU 耗费=7881 IO 耗费=2 时间=1
*/

select a.empname,a.empid
from emp a,cust b
where a.empid=b.empid
group by a.empname,a.empid
order by count(1)

/*
SELECT STATEMENT, GOAL = ALL_ROWS 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
SORT ORDER BY 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
HASH GROUP BY 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
HASH JOIN 耗费=5 基数=4 字节=312 CPU 耗费=2925893 IO 耗费=4 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=EMP 耗费=2 基数=2 字节=130 CPU 耗费=7461 IO 耗费=2 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=CUST 耗费=2 基数=4 字节=52 CPU 耗费=7881 IO 耗费=2 时间=1
*/

select emp.empname, count(1) as nums
from emp, cust
where emp.empid=cust.empid
group by emp.empname
order by 2

/*
SELECT STATEMENT, GOAL = ALL_ROWS 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
SORT ORDER BY 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
HASH GROUP BY 耗费=6 基数=4 字节=312 CPU 耗费=8745953 IO 耗费=4 时间=1
HASH JOIN 耗费=5 基数=4 字节=312 CPU 耗费=2925893 IO 耗费=4 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=EMP 耗费=2 基数=2 字节=130 CPU 耗费=7461 IO 耗费=2 时间=1
TABLE ACCESS FULL 对象所有者=SYS 对象名称=CUST 耗费=2 基数=4 字节=52 CPU 耗费=7881 IO 耗费=2 时间=1
*/



lky19861123 2011-04-14
  • 打赏
  • 举报
回复
select emp.empid,
emp.empname,
(select count(empid) from cust group by empid) as custnum
from emp
where emp.empid =cust.empid
order by custnum;
这样还是可以吧
陈字文 2011-04-14
  • 打赏
  • 举报
回复
select a.empname,a.empid,count(1) as nums
from emp a,cust b
where a.empid=b.empid
group by a.empname,a.empid
order by count(b.empid) desc;
陈字文 2011-04-14
  • 打赏
  • 举报
回复
select a.empname,a.empid
from emp a,cust b
where a.empid=b.empid
group by a.empname,a.empid
order by count(b.empid) desc;
luoyoumou 2011-04-14
  • 打赏
  • 举报
回复
select emp.empname, count(1) as nums
from emp, cust
where emp.empid=cust.empid
group by emp.empname
order by 2;
sh65489 2011-04-14
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zhuomingwang 的回复:]
SQL code
select empname,count(*)
from emp,cust
where emp.empid=cust.empid
order by 2 --按照查询出来的第二列排序
[/Quote]

少个group by
  • 打赏
  • 举报
回复
select empname,count(*) 
from emp,cust
where emp.empid=cust.empid
order by 2 --按照查询出来的第二列排序

17,382

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧