Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
sql中的总小时数总和_Sql_Crystal Reports - Fatal编程技术网

sql中的总小时数总和

sql中的总小时数总和,sql,crystal-reports,Sql,Crystal Reports,我在计算总小时数时遇到了一个小问题 我的工作时间像 Day1 - 12.23 Hours Day2 - 11.43 Hours Day3 - 10.18 Hours 当我计算总数时,它显示为33.84 但实际结果是34.24。如何通过SQL查询获取它 提前感谢通常查询时间如下: SELECT user_id, SUM(UNIX_TIMESTAMP(your_date_field))/3600 AS total_hours FROM yourTable GROUP BY da

我在计算总小时数时遇到了一个小问题

我的工作时间像

Day1 - 12.23 Hours
Day2 - 11.43 Hours
Day3 - 10.18 Hours
当我计算总数时,它显示为33.84

但实际结果是34.24。如何通过SQL查询获取它


提前感谢

通常查询时间如下:

SELECT user_id, SUM(UNIX_TIMESTAMP(your_date_field))/3600 AS total_hours FROM yourTable GROUP BY date(your_date_field), user_id; 挑选 用户id, SUM(UNIX\u TIMESTAMP(您的\u date\u字段))/3600作为表中的总\u小时数 按日期分组(您的日期字段),用户id;
希望它能有所帮助

我认为这应该可以做到:

;with hours as
(
select 12.53 as hours union all select 11.43 union all select 10.58
--select 12.23  as hours union all select 11.43 union all select 10.18 
)
,hours2 AS
(
select
floor(hours)  as rounded_hrs
,(hours % 1) * 100 as mins
FROM hours
)
SELECT 
CAST(sum(rounded_hrs) AS DECIMAL(18,2)) +
CAST(FLOOR(sum(mins) / 60) AS DECIMAL(18,2))  +
CAST((sum(mins) % 60) / 100 AS DECIMAL(18,2))
from hours2

我假设你的小时数实际上是以整部分为小时,分数为分钟的值。在这种情况下,您必须分别对整部分和分数部分求和:

WITH TimePartsSplit AS (
  SELECT
    IntHours = CAST(hours AS int),
    IntMinutes = CAST((hours - FLOOR(hours)) * 100 AS int)
  FROM atable
)
SELECT
  SUM(IntHours), SUM(IntMinutes) / 60, SUM(IntMinutes) % 60 * 0.01,
  SUM(IntHours) + SUM(IntMinutes) / 60 + SUM(IntMinutes) % 60 * 0.01
FROM TimePartsSplit

你们能展示你们的代码吗..实际上我正在从表中提取数据,比如从emp中选择工作时间。现在我想在末尾添加摘要。希望你得到了itUmm,总计33.84…@jestges:你需要在这个问题上做更多的工作。解释你正在努力实现的目标以及迄今为止你所做的尝试。我在你下面的评论中看到,你问的是Crystal reports,但你的问题中没有提到这一点。你希望有谁能帮助你吗?我已经得到了所有的价值观,并试图将其绑定到crystal report。在crystal报告摘要中,它显示了错误的值。它被视为十进制值而不是小时。请在此数据集上尝试您的解决方案:
选择12.53作为小时union all选择11.43 union all选择10.58
。它不会更正
SUM(hours)
(这是
34.54
,即使正确的结果应该是
35.54
)。@Andriy M-好点-已经编辑过,我认为它现在应该做这个把戏,即使它不是最好看的东西!我真的很喜欢你的
小时数%1
技巧,它可以去掉整个数字的一部分。