求一个带group by的多表连查的sql语句

table1:(pID可重复)pIDpScore120140151232365380table2:(pID唯一索引)pIDpTypeorgCode1H1112H2223H... table1:(pID可重复)
pID pScore
1 20
1 40
1 51
2 32
3 65
3 80

table2:(pID唯一索引)
pID pType orgCode
1 H1 11
2 H2 22
3 H3 33

table3:(orgCode唯一索引)
orgCode orgName
11 MM
22 NN
33 KK

我想实现的查询功能:
table1表相同PID的pScore的平均分数,相同PID的个数pCount, 以及关联的table2,table3的对应pID的信息
如上结果应该为:
pID pScore pCount pType orgName
1 37 3 H1 MM
2 32 1 H2 NN
3 48.3 2 H3 KK

select avg(pScore),count(*) from table1 group by pID 可以求table1平均分和个数,
但怎样通过pID把table2,table3关联起来呢?望高手帮写个sql语句。
展开
 我来答
pk_oracle
推荐于2017-09-18
知道答主
回答量:58
采纳率:0%
帮助的人:0
展开全部
SELECT a.pid,a.pscore,a.count,b.ptype,c.orgname
FROM (select a.pid,avg(a.pscore)as pscore,count(a.pid)as count
from table11 a
group by a.pid ) a, table12 b,table13 c
where a.pid = b.pid and b.orgcode = c.orgcode
你结果的第三行是65和80的平均值吗
oracle的,测试ok
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
murphylau
2008-04-14 · TA获得超过435个赞
知道小有建树答主
回答量:547
采纳率:0%
帮助的人:846万
展开全部
Oracle 下很简单
但是好久没用sql server 勒
下面的语句不知道行不
希望你试过之后通知我
谢谢

select a.pid , a.avg_pscore as pScore, a.tot_count as pCount , b.pType , c.orgName
(
select pid , avg(pScore) as avg_pscore,count(*) as tot_count
from table1
group by pID
) a ,
table2 b ,
table3 c
where a.pid = b.pid
and b.orgCode = c.orgCode
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
guoqlee
2008-04-14 · TA获得超过313个赞
知道小有建树答主
回答量:116
采纳率:0%
帮助的人:148万
展开全部
select table4.pID,table4.avgscore,table4.countnum,table2.pType ,table3.orgName from table2,table3,(select pID,avg(pScore) avgscore,count(*) countnum from table1 group by pID) table4 where table2.pID=table4.pID and table3.orgCode=table2.orgCode

oracle下,没有测试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
123flyman
2008-04-14 · 超过12用户采纳过TA的回答
知道答主
回答量:63
采纳率:0%
帮助的人:0
展开全部
学习,答案都一样
而且,你的3 KK 48.3是怎么算出来的,奇怪
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式