我在Varchar2数据类型中有一个表格列,其数据格式为' 00'。现在,我想使用SUM()函数添加此列的总数。请建议添加方法单一选择声明中的总数字。
<table>
<tr>
<th>Customer Code<th/>
<th>Hours<th/>
</tr>
<tr>
<td>1<td/>
<td>22:30<td/>
</tr>
<tr>
<td>2<td/>
<td>11:20<td/>
</tr>
<tr>
<td>2<td/>
<td>10:20<td/>
</tr>
</table>
&#13;
我需要单一选择查询,它返回客户代码和总小时数之和 针对每个客户
答案 0 :(得分:2)
假设您的数据库架构如下:
CREATE TABLE IF NOT EXISTS `test` (
`id` int(11) unsigned AUTO_INCREMENT PRIMARY KEY,
`code` int(11) unsigned NOT NULL,
`content` varchar(10) NOT NULL
) DEFAULT CHARSET=utf8;
INSERT INTO `test` (`id`, `code`, `content`) VALUES
('1', '1', '10:30'),
('2', '1', '5:40'),
('3', '2', '22:30'),
('4', '3', '15:20');
然后,你可以得到结果:
SELECT
code,
SEC_TO_TIME(SUM(TIME_TO_SEC(CAST(content AS TIME)))) AS total
FROM
test
GROUP BY code;
哪个会给你
code total
1 16:10:00
2 22:30:00
3 15:20:00
答案 1 :(得分:2)
上面的ans非常优化,但你可以使用
做同样的事情SELECT code,Replace(ROUND((SUM(substr(content,1,2) * 60) + SUM(substr(content,4,5)) ) / 60 , 2) ,'.',':') as total_hrs FROM test group by code
如果您不想使用大部分预先定义的功能,这可能有所帮助。