我有一个数据库表
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
希望你能理解我想要的人请帮助我谢谢
答案 0 :(得分:3)
查看GROUPBY
个功能:documentation。
例如:
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'字符串存储在其中。然后,我在这里提出的第一个查询应该有效。
答案 1 :(得分:2)
正确的方法是将表列数据类型更改为“INT”,并仅在这些列中存储数字。 然后,像SUM这样的简单查询就可以了。但首先应该更改列数据类型。
答案 2 :(得分:1)
如果你想计算你的字段应该整数。但现在我可以看到它是 varchar
请在您的字段中输入整数。
试试这个 -
SELECT SUM(ageing_with_a), SUM(ageing_with_b), SUM(ageing_with_c) FROM connection_td GROUP BY zone
答案 3 :(得分:0)
如果要首先添加列值,则必须在数据库中将列用作整数,并将日期放在数据库中
并尝试此查询
SELECT SUM(ageing_with_a), SUM(ageing_with_b), SUM(ageing_with_c) FROM connection_td GROUP BY zone