mysql - SQL查询逻辑,将行的字段添加在一起

标签 mysql sql

我正在开发一个网络应用程序,需要对一个字段的记录数组进行总计。

要进一步解释,请查看包含的图片:

enter image description here

此图描绘了我使用以下查询的输出:

SELECT * FROM logbook WHERE dayNight = 'D'

现在我需要做的是对所有这些记录的 hours 字段中的所有值进行总计。

完成后,输出应如下所示(仅作为示例):

6:05:21

代表 HH:MM:SS。

但是我想用十进制值来表示它的小时和分钟...所以如果我有 6 小时 40 分 2 秒,它会说 jsut 6:40。这将是以下结构 HH:MM。

所以我不知道该怎么做 - 但感谢您的所有帮助!

最佳答案

你可以通过一大堆令人讨厌的 Actor 来完成大部分工作:

select cast(sum(cast(hours as time)) as time)
from logbook
where dayNight = 'D'

这会给你一个时间值的结果。然后混入time_format获得所需的精度:

select time_format(cast(sum(cast(hours as time)) as time), '%H:%i')
from logbook
where dayNight = 'D'

您应该将 hours 列从 varchar 更改为 time .

你可以这样做:

select time_format(sum(cast(hours as time)), '%H:%i')
from logbook
where dayNight = 'D'

如果你想避免额外的类型转换;但是,保留外部转换可能会使以后的调试更容易,因为 sum(cast(hours as time) 会生成类似于 234211 的 23:42:11。


将您的列转换为合理的时间列后,您就可以取消所有转换:

select time_format(sum(hours), '%H:%i')
from logbook
where dayNight = 'D'

或者对所有内容进行求和,无论dayNight:

select time_format(sum(hours), '%H:%i')
from logbook

关于mysql - SQL查询逻辑,将行的字段添加在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7055067/

相关文章:

sql - 使用SQL获取嵌套json对象中第一个键的值

mysql - mysql中从左到右删除0

mysql服务器因为一个查询而烧毁,有可能吗?如何加快速度?

mysql - 如何将多个 JSON 值存储到单行数据库中?

php - 在一天中的特定时间禁用项目php

MySQL 查询排序依据在分组依据之前

mysql - sql引擎如何处理不等于的连接查询?

python - 如何将 SQL 中的一列数据转换为 python 中的列表?

SQL 聚合连接和子查询优化

java - oracle.sql.ARRAY 和 oracle.sql.ArrayDescriptor 的通用实现