Сумма общих часов в sql - PullRequest
       2

Сумма общих часов в sql

0 голосов
/ 29 ноября 2011

У меня небольшая проблема при расчете суммы часов

моего рабочего времени, например

Day1 - 12.23 Hours
Day2 - 11.43 Hours
Day3 - 10.18 Hours

, и когда я вычисляю сумму, она показывает 33,84

Но фактический результат - 34,24.Как я могу получить его по SQL-запросу?

Заранее спасибо

Ответы [ 3 ]

1 голос
/ 29 ноября 2011

Я думаю, что это должно сработать:

;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
0 голосов
/ 29 ноября 2011

Я предполагаю, что ваши часы на самом деле являются значениями с целыми частями в часах и долями в минутах. В этом случае вам нужно будет суммировать целые части и дробные части отдельно:

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
0 голосов
/ 29 ноября 2011

Обычно запрос на часы суммирования выглядит так:

SELECT 
    user_id, 
    SUM(UNIX_TIMESTAMP(your_date_field))/3600 AS total_hours FROM yourTable
GROUP BY date(your_date_field), user_id;

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...