mysql 两张表关联查询的 sql 怎么写?

2018-02-26 09:14:58 +08:00
 miaojh
有两张表 a 和 b,两张表,现在需要根据 a 表中 分数 查询出 学生实际的得分情况

a 表
name 得分
张三 55
李四 60
王五 85


b 表
分数 所占比例%
0 0
20 5
40 10
60 40
80 60
100 80

现在需要查询出 他们实际得到的分数 例如:
1.张三 分数 55 在 b 表中 大于 40 小于 60 所占比例为 10 故 张三得到的实际分数为 55*10%=5.5
2.李四 分数 60 在 b 表中 大于等于 60 小于 80 所占比例为 40 故 张三得到的实际分数为 60*40%=24
需要得到的结果如下
name 分数 实际分数
张三 55 5.5
李四 60 24
3435 次点击
所在节点    问与答
3 条回复
tradzero
2018-02-26 09:37:05 +08:00
意思现在作业也放在 v2 上问?
king2014
2018-02-26 09:40:31 +08:00
B 表的意义是?
直接代码逻辑判断不行吗?
我看 B 表就是一个分数区间占比
Tokin
2018-02-26 09:54:48 +08:00
为什么不直接查出来然后再计算实际分数。。。
SQL 查询的时候坐算术运算不嫌占资源么
按照你现有的表结构我还不知道怎么写,但是改了一下 B 表可以很方便的查询出结果
SQL 语句如下:
SELECT a.`name` '姓名', a.`score` '分数', a.`score`*(b.scale/100) '占比'
FROM `a` a
LEFT JOIN `b` b ON (a.`score` BETWEEN b.`range1` AND b.`range2`)
B 表结构:

其实就是加了一个区间
查询结果如下:

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432622

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX