sql - 计算从开始到这条记录的平均分

我有一个 table 命名测试,其结构如下

id mark join_id
1  5    1
2  4    1
3  9    1
4  5    2 
5  7    2
6  12   2

我想写一个查询,可以让我得到从开始记录到这条记录的平均分数,所需的结果如下

id mark join_id   avg_of_previous_marks
1  5    1         5      
2  4    1         4.5
3  9    1         6
4  5    2         5.75
5  7    2         6
6  12   2         7

我写了这个查询,但它似乎不能正常工作

SELECT test.id, test.mark, test.join_id,  test_avg.avg_of_previous_marks FROM test
LEFT JOIN (SELECT id, join_id, AVG(mark) as avg_of_previous_marks FROM test GROUP BY 
join_id) test_avg 
ON test_avg.join_id = test.join_id AND test_avg.id <= test.id

它给出了这个结果

id mark join_id   avg_of_previous_marks
1  5    1         6      
2  4    1         6
3  9    1         6
4  5    2         8
5  7    2         8
6  12   2         8

回答1

它是您需要的简单运行总计。

select id,mark,join_id, avg(mark) over (order by id) avg_of_previous_marks from test_avg ;

小提琴https://dbfiddle.uk/?rdbms=mysql_8.0&fiddle=cf95fdfcf207430c544dd2457354b437

相似文章

javascript - Sorting 在另一个排序中

我有一组具有多个属性的数据,我希望它们排序的主要方式是在项目A之后放置项目B,但我不想影响这些项目之外的顺序。数据集(不分先后):记录1记录2记录3(具有项目A属性)记录4记录5(项目A)数据集(按A...

python - python3在特定位置插入文本单词

我有一个文本,我希望能够将某些单词添加到其中的特定位置。为此,我需要将我的文本剪切成字母(而不是单词)。我可以完成这项工作,但问题是我要添加的单词会截断另一个单词。我的输入(数字不好,因为文字比较长,...

随机推荐

最新文章