gpt4 book ai didi

mysql - 使用星号仅计算数字类型列的聚合值的 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 16:51:30 25 4
gpt4 key购买 nike

假设我有一个包含异构列(varchar、int 等)的表。

+-------+----+----+----+
| Nme | Py | cm | Mt |
+-------+----+----+----+
| johny | 68 | 70 | 66 |
| Harry | 86 | 76 | 90 |
| johny | 18 | 72 | 66 |
+-------+----+----+----+

并且需要计算每个整数列的总和,但使用一些通用的 SQL 查询,这样即使我添加新的整数列,我也不必更改查询。

我需要什么,但以通用形式

SELECT SUM(Py), SUM(cm), SUM(Mt) FROM table GROUP BY NME;

类似于:

SELECT SUM(*) FROM table WHERE <COLUMNTYPE(INT)> GROUP BY NME;

有没有办法解决或者在 SQL 中不可能?

最佳答案

没有这样的事。您似乎误解了如何使用 SQL。我认为您需要一个可以“反转”数据的表格。像这样的东西:

create table personValues (
personValues int auto_increment primary key,
person varchar(255),
value_type varchar(255),
value int
);

因此,现在的一行将变成三行。然后,您将在不同行中获得结果,但您确实得到了结果:

select value_type, sum(value)
from personValues
group by value_type;

如果您需要将其转换为单行,您有两个选择:

  • 使用动态 SQL 的数据透视。
  • 使用group_concat()创建一个长字符串。

关于mysql - 使用星号仅计算数字类型列的聚合值的 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52793439/

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