请教:统计学生平均体重的SQL语法

山卜居士 2003-01-17 05:23:35
有两个表,内容如下,它们之间以id字段相关联:
A表:
id name  weight
1 小陈 52
2 小王 58
1 小刘 53
...

B表:
id property value
1  班级 A
1 年龄    22
2 班级 B
2 年龄 25
1  班级 A
1 年龄    21

现在我要分班级统计每个班级学生的平均重量,该如何定SQL?
...全文
158 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
CCEO 2003-01-17
  • 打赏
  • 举报
回复
B表的id和property是复合键,不允许重复。
??

你的数据就是有重复的。

闪人了!


hjhing 2003-01-17
  • 打赏
  • 举报
回复
turbochen 真乃信人
小弟在此多謝了!
山卜居士 2003-01-17
  • 打赏
  • 举报
回复
我忘了说明,B表的id和property是复合键,不允许重复。
shuangyulove 2003-01-17
  • 打赏
  • 举报
回复
本来是很好写的语句,可你的结构????
CCEO 2003-01-17
  • 打赏
  • 举报
回复
哦,以上数据还是不够,

A表:
id name  weight
1 小陈 52
2 小王 58
1 小刘 52
1 小X 49

B表:
id property value
1  班级 A
1 年龄    22
2 班级 B
2 年龄 25
1  班级 A
1 年龄    21
1  班级 A
1 年龄    23

CCEO 2003-01-17
  • 打赏
  • 举报
回复
那说明你的测试数据不够

你把数据改成:

A表:
id name  weight
1 小陈 52
2 小王 58
1 小刘 52

B表:
id property value
1  班级 A
1 年龄    22
2 班级 B
2 年龄 25
1  班级 A
1 年龄    21


就三个人,你应该允许“小陈”和“小刘”一样重吧?!

山卜居士 2003-01-17
  • 打赏
  • 举报
回复
CCEO(): 你说上面两位都是错的,但我测试出来是对的。
那你有没有更好的解呢?
CCEO 2003-01-17
  • 打赏
  • 举报
回复
都是错的,讲什么效率?
山卜居士 2003-01-17
  • 打赏
  • 举报
回复
从执行效率上看,tj_dns(愉快的登山者) 比 hjhing(winding) 的快,但我还是守一守信用,分数只加给hjhing(winding) ,

顺便问一下,有什么比较好的书可以提高写SQL的能力?
hjhing 2003-01-17
  • 打赏
  • 举报
回复
老大,你是在測試別人的眼力嗎?
CCEO 2003-01-17
  • 打赏
  • 举报
回复
A表:
id name  weight
1 小陈 52
2 小王 58
1 小刘 53
1 小X 51
...

B表:
id property value
1  班级 A
1 年龄    22
2 班级 B
2 年龄 25
1  班级 A
1 年龄    21
1  班级 A
1 年龄    21
....

不可能同班的不许同岁吧??
CCEO 2003-01-17
  • 打赏
  • 举报
回复
表的设计无法苟同!

根本没有办法对应!!

能写出来的,不是魔鬼就是上帝!
愉快的登山者 2003-01-17
  • 打赏
  • 举报
回复
select B.value as 班级, AVG(A.weight) from A left join B
on A.id = B.id where B.property = '班级'
group by B.value
hjhing 2003-01-17
  • 打赏
  • 举报
回复
select [value],AVG(weight)
from
(select distinct B.[id] ,B.[value] , A.weight
from B,A where B.[id] = A.[id] and B.[property] = '班级') as T
group by [value]
山卜居士 2003-01-17
  • 打赏
  • 举报
回复
我的表是1对多的关系,你先不要考虑有没有冗余。

我的分数只加给第一个给出正确答案的人。
hjhing 2003-01-17
  • 打赏
  • 举报
回复
--- try:

select [value],AVG(weight)
from
(select B.[id] ,B.[value] , A.weight
from B,A where B.[id] = A.[id] and B.[property] = '班级') as T
group by [value]
windindance 2003-01-17
  • 打赏
  • 举报
回复
你的表的关系是什么……我怎么觉得B表有明显的冗余呢?

34,838

社区成员

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

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