我们有 3个 tables:
1. table: paper (paper_id, paper_name, paper_year, paper_conference)
2. table: author(author_id, author_name, author_institution)
3. table: co_author(author_id, paper_id, co_author_no)第一个论文table
paper_id: 论文编号 主码
paper_name: 论文名
paper_year: 论文发表年
paper_conference: 论文发表大会比如: 1 Archiving Scientific Data 2002 SIGMOD第二个作者table
author_id: 作者编号 主码
author_name: 作者名
author_institution: 隶属机构比如:4 Alberto O. Mendelzon University of Toronto
第三个协同作者table
author_id: 作者编号 一个作者可以写多本书
paper_id: 论文编号 一篇论文可以有多个作者参与
co_author_no: 同一论文作者的位置 比如 第一作者 第二作者第一题:给一个整数 x, 找到所有的配对 (aid,in), 其中 “aid” 是一个作者编号 表示这个作者跟来至最少x个不同机构的作者合作完成过论文(可以是不同论文), “in” 是不同机构的总数.比如, 作者1和来至三个不同机构的六个作者合作过. 作者2和来自四个不同机构的四个作者合作过 作者3和一个来自同机构的作者合作过
输入: 3
输出: (作者1, 3)
(作者2, 4)第二题. 给出一个 论文发表大会 c 和 论文发表年 y, 找出在 y年,c大会,发表论文最过的机构比如, 如果 c=”Database conference”, y=1999, 如果 SFU 和 UBC 两个机构有并列第一多的论文发表,那个应该两个机构一起输出
1. table: paper (paper_id, paper_name, paper_year, paper_conference)
2. table: author(author_id, author_name, author_institution)
3. table: co_author(author_id, paper_id, co_author_no)第一个论文table
paper_id: 论文编号 主码
paper_name: 论文名
paper_year: 论文发表年
paper_conference: 论文发表大会比如: 1 Archiving Scientific Data 2002 SIGMOD第二个作者table
author_id: 作者编号 主码
author_name: 作者名
author_institution: 隶属机构比如:4 Alberto O. Mendelzon University of Toronto
第三个协同作者table
author_id: 作者编号 一个作者可以写多本书
paper_id: 论文编号 一篇论文可以有多个作者参与
co_author_no: 同一论文作者的位置 比如 第一作者 第二作者第一题:给一个整数 x, 找到所有的配对 (aid,in), 其中 “aid” 是一个作者编号 表示这个作者跟来至最少x个不同机构的作者合作完成过论文(可以是不同论文), “in” 是不同机构的总数.比如, 作者1和来至三个不同机构的六个作者合作过. 作者2和来自四个不同机构的四个作者合作过 作者3和一个来自同机构的作者合作过
输入: 3
输出: (作者1, 3)
(作者2, 4)第二题. 给出一个 论文发表大会 c 和 论文发表年 y, 找出在 y年,c大会,发表论文最过的机构比如, 如果 c=”Database conference”, y=1999, 如果 SFU 和 UBC 两个机构有并列第一多的论文发表,那个应该两个机构一起输出
select
b.author_id as aid,count(diastinct author_institution) as [in]
from
a
join c on
a.paper_id=c.paper_id
join b on
b.作者编号=c.作者编号
and
b.作者编号 in(select 作者编号 from b group by 作者编号 having count(1)>=x)
b.author_id as aid,count(diastinct author_institution) as [in]
from
a
join c on
a.paper_id=c.paper_id
join b on
b.作者编号=c.作者编号
and
b.作者编号 in(select 作者编号 from b group by 作者编号 having count(1)>=x)
group by
b.author_id
select
top 1 author_institution with ties
from
(
select
b.author_institution,count(author_id) as num
from
a
join c on
a.paper_id=c.paper_id
join b on
b.作者编号=c.作者编号
group by
b.author_institution
)t
order by
t.num desc
这里面的a,b,c是指题里面1,2,3。paper,author,和co_author 三个table吗?sql里面不需要先定义吗?比如author a
lz,我算是服了你拉,你还是先好好把SQL基础的知识学习一下吧