gpt4 book ai didi

mysql - 运行重新启动的查询

转载 作者:行者123 更新时间:2023-11-29 14:26:57 24 4
gpt4 key购买 nike

我正在通过 phpmyadmin 运行 MySql 数据库,并正在构建一个查询来汇总一些值。

在 EXCEL 中,公式如下所示 =IF(AND(P6=P5,B6=B5),SUM(H5+F6),F6)

该公式放在 H 列

P 列是一个类标识符。 B 栏是他们的注册号。 H 列是他们的总分。 F列是他们入场的​​分值。

它在 Excel 中运行得很好。但在 SQL 语法上遇到了一些麻烦。

我知道首先我需要对文件进行排序,以便所有内容都按正确的顺序进行,明白了。但从那时起我就一无所知了。

如果我的 Excel 代码需要更深入的解释,如果有帮助的话,我可以这样做。

最佳答案

据我了解,您需要对一些“分区”或行进行总计。看来在 MySql 中您需要对变量进行一些“黑客攻击”,因为该数据库中不提供分析函数。

以下查询即可完成。它使用三个变量 - @rollingsum 存储 F 列的总和,@prevP 和 @prevB 变量存储 B 和 P 列的先前值)

SELECT s.p, s.b, s.f, s.rollingSum FROM 
(
SELECT p,
b,
f,
IF( p=@prevP AND b=@prevB,
@rollingsum := @rollingsum + f,
@rollingsum := f ) as rollingSum,
@prevP := p,
@prevB := b
FROM test_table p, (SELECT @rollingsum := 0, @prevP := '', @prevB := '') r
ORDER BY p,b ) s

示例:

源数据:

P   B   F
1 1 10
1 1 10
1 2 10
1 2 10
1 2 10
2 2 10
2 2 10
2 2 10

上述查询的结果(rollingsum 列是您的 H 列 - Excel 中的总分):

P   B   F   ROLLINGSUM
1 1 10 10
1 1 10 20
1 2 10 10
1 2 10 20
1 2 10 30
2 2 10 10
2 2 10 20
2 2 10 30

关于mysql - 运行重新启动的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10776951/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com