Sql 计算sum()是否介于范围之间

Sql 计算sum()是否介于范围之间,sql,postgresql,Sql,Postgresql,我目前正在研究一些板球数据,我需要找到击球手在一系列得分之间的击球率(跑动*100/球) 我有一个这样的范围表: | lower | upper | | ------| ------- | | 0 | 10 | | 10 | 20 | | 20 | 30 | | 30 | 40 | | 40 | 50 | | 50 | 60 | | 60 | NULL | 我还有一个表,表中显示了

我目前正在研究一些板球数据,我需要找到击球手在一系列得分之间的击球率(跑动*100/球)

我有一个这样的范围表:

| 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