Sql 计算sum()是否介于范围之间
我目前正在研究一些板球数据,我需要找到击球手在一系列得分之间的击球率(跑动*100/球) 我有一个这样的范围表:Sql 计算sum()是否介于范围之间,sql,postgresql,Sql,Postgresql,我目前正在研究一些板球数据,我需要找到击球手在一系列得分之间的击球率(跑动*100/球) 我有一个这样的范围表: | lower | upper | | ------| ------- | | 0 | 10 | | 10 | 20 | | 20 | 30 | | 30 | 40 | | 40 | 50 | | 50 | 60 | | 60 | NULL | 我还有一个表,表中显示了
| lower | upper |
| ------| ------- |
| 0 | 10 |
| 10 | 20 |
| 20 | 30 |
| 30 | 40 |
| 40 | 50 |
| 50 | 60 |
| 60 | NULL |
我还有一个表,表中显示了击球手在每个球上得分的次数:
| inning | ball | runs | striker | non_striker|
| ------ | ------| ------- | ------- | ---------- |
| 1 | 1 | 0 | 1 | 2 |
| 1 | 2 | 4 | 1 | 2 |
| 1 | 3 | 0 | 1 | 2 |
| 1 | 4 | 1 | 1 | 2 |
| 1 | 5 | 1 | 2 | 1 |
| 1 | 6 | 0 | 1 | 2 |
我已经想出了如何获得他们整场比赛的分数:
select striker, sum(runs) as "runs", count(*) as "balls", sum(runs)*100/count(*) as "strike_rate"
from balls
group by inning, striker
当击球手的得分在个人范围内时,我该如何得到它们
预期输出如下所示:
| batsman| end_score | end_balls |score_at_10| score_at_20|
| ------ | ---------- | ---------- | --------- | --------- |
| 1 | 52 | 31 | 15 | 32 |
| 2 | 22 | 16 | 14 | NULL |
结束是他们出局前的最终得分,还是局数结束(基本上是求和(分)和计数(*)你想在这里看到的确切输出是什么?上比下真的低吗?“范围”表是否有要显示的名称或id列?是否“上限”应低于“下限”?什么是“前锋id”?你是说“前锋”还是你的桌子方向错了?请检查您的问题并确保所有内容都正确。我在
balls
中没有看到batsman\u scored
列。查询是否应包含sum(runs)as batsman\u scored
?