我有一个数据库表
connection_td
id - zone - ageing_with_a - ageing_with_b - ageing_with_c - tatal_ageing - average
1 Abw 5days 1days 2days 8days 2.6days
2 bbb 1days 5days 2days 8days 2.6days
3 bbb 2days 3days 4days 9days 3days
4 Abw 3days 2days 6days 11days 3.4days
5 ccc 4days 4days 6days 14days 4.3days
现在我想像在这个tanle 中一样检索这些数据
id - zone - ageing_with_a - ageing_with_b - ageing_with_c - tatal_ageing - average
1 Abw 8 3 8 19 6
2 bbb
3 ccc
希望你能理解我想要什么,有人请帮我谢谢
看看GROUPBY
函数:文档。
例如:
SELECT zone, SUM(ageing_with_a) , SUM(ageing_with_b) , SUM(ageing_with_c) , SUM(tatal_ageing) , SUM(average)
FROM connection_td
GROUP BY zone
但是我看到您的数据中有days
字符串。您必须删除此字符串,然后将结果强制转换(或转换)为数字,才能使用SUM函数。
像SUM(CAST(REPLACE(ageing_with_a ,'[a-z]+','')) AS DECIMAL(2,2))
这样的东西就可以了。
或者更好的方法是:根据需要将列类型更改为DECIMAL或INTEGER,并停止在其中存储"days"字符串。那么,我在这里给出的第一个查询应该是有效的。
正确的方法是将表列数据类型更改为"INT",并且只在这些列中存储数字。然后,像SUM这样的简单查询就可以了。但首先应该更改列的数据类型。
如果要计算字段,则应为整数。但现在我可以看到它是varchar
请在您的字段中设置整数。
试试这个-
SELECT SUM(ageing_with_a), SUM(ageing_with_b), SUM(ageing_with_c) FROM connection_td GROUP BY zone
如果您想先添加列值,您必须在数据库中使用列作为整数,并将您的天数放入数据库
并尝试此查询
SELECT SUM(ageing_with_a), SUM(ageing_with_b), SUM(ageing_with_c) FROM connection_td GROUP BY zone