标题:Select语句实现的一个问题
只看楼主
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
结帖率:100%
 问题点数:0 回复次数:16 
Select语句实现的一个问题

求参加人数最多的社会团体的名称和参加人数
用select怎么实现啊?
我这样写的 ,结果报错。
select 社会团体.编号, 社会团体.名称 , max(count(职工号))
from 参加, 社会团体
where 社会团体.编号=参加.编号
group by 社会团体.编号,社会团体.名称 ;
大家来帮一下忙
表结构如下
职工(职工号,姓名,年龄,性别)
社会团体(编号,名称,负责人,活动地点)
参加(职工号,编号,参加日期)

搜索更多相关主题的帖子: Select 语句 
2007-11-10 18:22
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
create table 社会团体(
编号 int,
名称 varchar(60),
负责人 varchar(20),
活动地点 varchar(500)
)

insert into 社会团体 values(1,'红十字会','李明','广州天河区')
insert into 社会团体 values(2,'养老院义工','陈强','广州各区')

create table 参加(
职工号 int,
编号 int,
参加日期 datetime)

insert into 参加 values(1,1,'2007-10-5')
insert into 参加 values(2,1,'2007-10-5')
insert into 参加 values(3,1,'2007-10-5')
insert into 参加 values(4,2,'2007-10-5')
insert into 参加 values(5,2,'2007-10-5')
insert into 参加 values(6,2,'2007-10-5')
insert into 参加 values(7,2,'2007-10-5')
insert into 参加 values(8,2,'2007-10-5')
insert into 参加 values(9,2,'2007-10-5')
insert into 参加 values(10,2,'2007-10-5')


select top 1a.名称,a.负责人,a.活动地点,b.参加人数
from 社会团体 a
join
(select 编号,count(1) as 参加人数 from 参加 group by 编号) b
on a.编号=b.编号
order by b.参加人数 desc

drop table 社会团体,参加

/*
养老院义工 陈强 广州各区 7
*/

我的msn: myfend@
2007-11-10 19:03
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
得分:0 

楼上的学长真厉害
我有学到了很多知识
不过我还有一个问题
就是
查找参加了职工号为 “1102”的职工所参加的全部社会团体的职工号
我是这么写的,你看对不,我看不对,但我不知道怎么修改。
select 职工号
from 职工
where not exists (
select *
from 社会团体
where not exists(
select *
from 参加
where 职工.职工号 = 参加.职工号 and 社会团体.编号=参加.编号 and 参加.职工='1002'));


择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-10 19:18
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
create table 社会团体(
编号 int,
名称 varchar(60),
负责人 varchar(20),
活动地点 varchar(500)
)

insert into 社会团体 values(1,'红十字会','李明','广州天河区')
insert into 社会团体 values(2,'养老院义工','陈强','广州各区')

create table 参加(
职工号 varchar(6),
编号 int,
参加日期 datetime)

insert into 参加 values('1001',1,'2007-10-5')
insert into 参加 values('1002',1,'2007-10-5')
insert into 参加 values('1003',2,'2007-10-5')
insert into 参加 values('1005',1,'2007-10-5')
insert into 参加 values('1008',2,'2007-10-5')
insert into 参加 values('1009',1,'2007-10-5')
insert into 参加 values('1010',2,'2007-10-5')

create table 职工(
职工号 varchar(6),
姓名 varchar(20),
年龄 smallint,
性别 bit --1表示男,0表示女
)

insert into 职工 values('1001','李伟',37,1)
insert into 职工 values('1002','赵天',22,1)
insert into 职工 values('1003','王容',27,0)
insert into 职工 values('1004','叶茜',31,0)
insert into 职工 values('1005','唐蓎',30,0)
insert into 职工 values('1006','方文',24,0)
insert into 职工 values('1007','曾强',34,1)
insert into 职工 values('1008','李静',22,0)
insert into 职工 values('1009','李媚媚',25,0)
insert into 职工 values('1010','何一',30,1)

select a.职工号,a.姓名,a.年龄,性别=case when a.性别=1 then '男' else '女' end
from 职工 a,(select 编号 from 参加 where 职工号='1002') b,参加 c
where a.职工号=c.职工号 and b.编号=c.编号

drop table 社会团体,参加,职工

我的msn: myfend@
2007-11-10 19:51
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
/*

1001 李伟 37 男
1002 赵天 22 男
1005 唐蓎 30 女
1009 李媚媚 25 女

*/

我的msn: myfend@
2007-11-10 19:55
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
得分:0 
嗯 谢谢版主了 !

择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-10 19:58
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
得分:0 
版主可在呀 , 发现问题了。
你的理解有误啊 要求是要查找参加了职工号为 “1002”的职工所参加的全部社会团体的职工号
你的测试数据不完整吧,
如果1002参加了两个团体或更多的话,
select a.职工号,a.姓名,a.年龄,性别=case when a.性别=1 then '男' else '女' end
from 职工 a,(select 编号 from 参加 where 职工号='1002') b,参加 c
where a.职工号=c.职工号 and b.编号=c.编号
这几句话的功能就是查找只要参加了 1002所参加的任意一个团体 的职工了,
而题目的意思是查找 那些参加了 1002所参加的全部团体 的职工
是不是?那该怎么改呢?

择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-10 21:15
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
得分:0 
版主可在呀 , 发现问题了。
你的理解有误啊 要求是要查找参加了职工号为 “1002”的职工所参加的全部社会团体的职工号
你的测试数据不完整吧,
如果1002参加了两个团体或更多的话,
select a.职工号,a.姓名,a.年龄,性别=case when a.性别=1 then '男' else '女' end
from 职工 a,(select 编号 from 参加 where 职工号='1002') b,参加 c
where a.职工号=c.职工号 and b.编号=c.编号
这几句话的功能就是查找只要参加了 1002所参加的任意一个团体 的职工了,
而题目的意思是查找 那些参加了 1002所参加的全部团体 的职工
是不是?那该怎么改呢?

择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-10 21:18
purana
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:广东-广州
等 级:版主
威 望:66
帖 子:6039
专家分:0
注 册:2005-6-17
得分:0 
没错啊.

我的msn: myfend@
2007-11-11 09:38
zhaozhiwei
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-7-19
得分:0 
你试试再在你的参加表中让1002再添加一个社团,看看那结果怎样
在我的实验中怎么有错呢

择晴日,访友欢。无限天涯各一边,亲谊心相连。品美食,游山川。闲来无事灌论坛,幸福至年年。
2007-11-11 20:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-185069-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.100564 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved