求一条SQL语句

mynamelj 2008-01-08 04:42:39
一张表tb结构如下:

编号 品种 跟单员 接单数量
-----------------------------------
1 XXX A 300
2 XXX A 200
3 XXX B 500
4 XXX B 600
5 XXX C 400
6 XXX C 300
7 XXX D 350
8 XXX D 480


需求:
1.找出接单数(合计)最大的一个跟单员
2.找出接单数(合计)超过800的跟单员
3.用一条SQL语句来完成
...全文
132 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
utpcb 2008-01-08
  • 打赏
  • 举报
回复
1.
select top 1 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
order by sum(接单数量) desc

2.
select 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
having sum(接单数量)>800
-狙击手- 2008-01-08
  • 打赏
  • 举报
回复
看错了


create table tb(编号 int, 品种 varchar(10), 跟单员 varchar(10),  接单数量 int)
insert tb
select 1 ,'XXX', 'A', 300
union select 2 ,'XXX', 'A', 800
union select 3 ,'XXX', 'B', 500
union select 4 ,'XXX', 'B', 600
union select 5 ,'XXX', 'C', 400
union select 6 ,'XXX', 'E', 300
union select 7 ,'XXX', 'D', 350
union select 8 ,'XXX', 'D', 480


select a.*
from(
select 跟单员,cnt=sum(接单数量)
from tb
group by 跟单员) a
right join (select top 1 跟单员,sum(接单数量) as id from tb group by 跟单员 order by sum(接单数量) desc) b
on a.cnt = b.id
/*

跟单员 cnt
---------- -----------
A 1100
B 1100

(所影响的行数为 2 行)
*/




drop table tb
kk19840210 2008-01-08
  • 打赏
  • 举报
回复
select top 1 跟单员 from (select 跟单员,接单数量=sum(接单数量) from tb  group by 跟单员 desc)a
wzy_love_sly 2008-01-08
  • 打赏
  • 举报
回复
没卡懂
-狙击手- 2008-01-08
  • 打赏
  • 举报
回复
create table tb(编号 int, 品种 varchar(10), 跟单员 varchar(10),  接单数量 int)
insert tb
select 1 ,'XXX', 'A', 300
union select 2 ,'XXX', 'A', 200
union select 3 ,'XXX', 'B', 500
union select 4 ,'XXX', 'B', 600
union select 5 ,'XXX', 'C', 400
union select 6 ,'XXX', 'E', 300
union select 7 ,'XXX', 'D', 350
union select 8 ,'XXX', 'D', 480


select a.*
from(
select 跟单员,cnt=count(1)
from tb
group by 跟单员) a
right join (select top 1 跟单员,count(1) as id from tb group by 跟单员) b
on a.cnt = b.id
/*
跟单员 合计
---------- -----------
A 2
B 2
D 2

(所影响的行数为 3 行)
*/

select 跟单员, count(1) 合计
from tb
group by 跟单员
having count(1)=(select top 1 count(1) from tb group by 跟单员 order by sum(接单数量) desc)

/*
跟单员 合计
---------- -----------
A 2
B 2
D 2

(所影响的行数为 3 行)
*/



drop table tb
昵称被占用了 2008-01-08
  • 打赏
  • 举报
回复

declare @tb table (
编号 int, 品种 varchar(10), 跟单员 varchar(10), 接单数量 int)

insert @tb
select 1 ,'XXX', 'A', 300
union select 2 ,'XXX', 'A', 200
union select 3 ,'XXX', 'B', 500
union select 4 ,'XXX', 'B', 600
union select 5 ,'XXX', 'C', 400
union select 6 ,'XXX', 'C', 700
union select 7 ,'XXX', 'D', 350
union select 8 ,'XXX', 'D', 480



select 跟单员,sum(接单数量) 合计
from @tb
group by 跟单员
having sum(接单数量)=(select top 1 sum(接单数量) from @tb group by 跟单员 order by sum(接单数量) desc)


--结果
跟单员 合计
---------- -----------
B 1100
C 1100

(所影响的行数为 2 行)

mynamelj 2008-01-08
  • 打赏
  • 举报
回复
谢谢大家的回答,第一个需要改下:
不是找出最大数的一个跟单员,而是找出跟单总数最大的跟单员,例如有N个最大数,这种情况怎样写呢?
昵称被占用了 2008-01-08
  • 打赏
  • 举报
回复

--1

select 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
having sum(接单数量)=(select top 1 sum(接单数量) from tb group by 跟单员 order by sum(接单数量) desc)

-狙击手- 2008-01-08
  • 打赏
  • 举报
回复
create table tb(编号 int, 品种 varchar(10), 跟单员 varchar(10),  接单数量 int)
insert tb
select 1 ,'XXX', 'A', 300
union select 2 ,'XXX', 'A', 200
union select 3 ,'XXX', 'B', 500
union select 4 ,'XXX', 'B', 600
union select 5 ,'XXX', 'C', 400
union select 6 ,'XXX', 'C', 300
union select 7 ,'XXX', 'D', 350
union select 8 ,'XXX', 'D', 480



select top 1 跟单员,cnt=count(1)
from tb
group by 跟单员
order by cnt desc


drop table tb
mynamelj 2008-01-08
  • 打赏
  • 举报
回复
我是楼住,把第一个需求改一下。

不是找出最大数的一个跟单员,而是找出跟单总数最大的跟单员,例如有N个最大数,这种情况怎样写呢?
liangCK 2008-01-08
  • 打赏
  • 举报
回复
leo的..聚合函数..不能这样哦.
wzy_love_sly 2008-01-08
  • 打赏
  • 举报
回复
哈 没人回答3?
leo_lesley 2008-01-08
  • 打赏
  • 举报
回复

create table tb(编号 int, 品种 varchar(10), 跟单员 varchar(10), 接单数量 int)
insert tb
select 1 ,'XXX', 'A', 300
union select 2 ,'XXX', 'A', 200
union select 3 ,'XXX', 'B', 500
union select 4 ,'XXX', 'B', 600
union select 5 ,'XXX', 'C', 400
union select 6 ,'XXX', 'C', 300
union select 7 ,'XXX', 'D', 350
union select 8 ,'XXX', 'D', 480



select top 1 跟单员,cnt=sum(接单数量)
from tb
group by 跟单员
having sum(接单数量)>800
order by cnt desc


drop table tb
wzy_love_sly 2008-01-08
  • 打赏
  • 举报
回复
declare @tb table(编号 int,品种 varchar(10),跟单员 varchar(10),接单数量 int)
insert into @tb select 1,'xxx','a',300
insert into @tb select 2,'xxx','a',200
insert into @tb select 3,'xxx','b',500
insert into @tb select 4,'xxx','b',600
insert into @tb select 5,'xxx','c',400
insert into @tb select 6,'xxx','c',300
insert into @tb select 7,'xxx','d',300
insert into @tb select 8,'xxx','d',480

--1
select top 1 跟单员,sum(接单数量) from @tb group by 跟单员 order by sum(接单数量) desc
--2
select 跟单员,sum(接单数量) from @tb group by 跟单员 having sum(接单数量)>700


跟单员 (无列名)
b 1100

跟单员 (无列名)
b 1100
d 780
kk19840210 2008-01-08
  • 打赏
  • 举报
回复

1.找出接单数(合计)最大的一个跟单员

select top 1 跟单员 from (select 跟单员,接单数量=sum(接单数量) from tb group by 跟单员)a

2.找出接单数(合计)超过800的跟单员
select 跟单员 from (select 跟单员,接单数量=sum(接单数量) from tb group by 跟单员) a where a.接单数量>=800
leo_lesley 2008-01-08
  • 打赏
  • 举报
回复
select max(sum(接单数量))
from tb
group by 跟单员


select sum(接单数量)
from tb
group by 跟单员
having sum(接单数量)>800
-狙击手- 2008-01-08
  • 打赏
  • 举报
回复
1.
select top 1 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
order by sum(接单数量) desc

2.
select 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
having sum(接单数量)>800
liangCK 2008-01-08
  • 打赏
  • 举报
回复
1.
select top 1 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
order by sum(接单数量) desc

2.
select 跟单员,sum(接单数量) 合计
from tb
group by 跟单员
having sum(接单数量)>800

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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