gpt4 book ai didi

mysql - 总之,用例将传入值与另一列进行比较(MYSQL)

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:54 24 4
gpt4 key购买 nike

即:

| id | num |
| a | 1 |
| b | 2 |
| c | 3 |
| d | 4 |
| e | 5 |

这个查询本质上就是我想要做的:

select num as number, sum(case num > number then num else 0 end) as summation from table;

(我正在尝试对列 num 中大于当前选定 num 的所有整数求和。)

上表的示例输出:

| num | summation |
| 1 | 14 |
| 2 | 12 |
| 3 | 9 |
| 4 | 5 |
|5 | 0 |

问题在于我不能使用同一个select语句中定义的别名;还有别的办法吗?
谢谢!

最佳答案

如果您使用的是 MySQL 8.0,则可以使用窗口函数。

SELECT num,
sum(num) OVER (ORDER BY num DESC) - num summation
FROM elbat
ORDER BY num;

在 MySQL 8.0 之前,您可以使用相关子查询。

SELECT t1.num,
coalesce((SELECT sum(t2.num)
FROM elbat t2
WHERE t2.num > t1.num),
0) summation
FROM elbat t1
ORDER BY t1.num;

关于mysql - 总之,用例将传入值与另一列进行比较(MYSQL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51664819/

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