Sql 我正在尝试创建分析国家,由玩家完成游戏,将日期转换为小时
这是运动桌Sql 我正在尝试创建分析国家,由玩家完成游戏,将日期转换为小时,sql,oracle,plsql,oracle-apex,analytics,Sql,Oracle,Plsql,Oracle Apex,Analytics,这是运动桌 Country Players Hours Completed_Time India Player1 7 24-05-2021 07:29 India Player2 7 24-05-2021 07:21 India Player3 7 24-05-2021 07:26 India Player4 7 24-05-2021 07:30 India Player5 2 25-05-2021 02:01
Country Players Hours Completed_Time
India Player1 7 24-05-2021 07:29
India Player2 7 24-05-2021 07:21
India Player3 7 24-05-2021 07:26
India Player4 7 24-05-2021 07:30
India Player5 2 25-05-2021 02:01
US Player1 8 25-05-2021 08:54
US Player2 8 25-05-2021 08:57
US Player3 8 25-05-2021 08:54
**US Player4 8 25-05-2021 08:45
US Player5 05 26-05-2021 05:19**
绘制图表时,我面临将完成时间
列日期时间转换为小时
我使用了下面的oracle SQL查询
select Country,Players,TO_NUMBER(TO_CHAR(Completed_Time,'HH')) as Hours
from sports
仅仅几个小时不足以绘制图表
如果我们只花几个小时的话
Country Players Hours Completed_Time
US Player4 **8** **25**-05-2021 **08**:45
US Player5 **05** **26**-05-2021 **05**:19
Player5比Player4多花了一天时间所以
在这种情况下,我希望Player5的小时数为+24,Player4小时数应为8,Player5小时数应为29如果您没有startdate,您可以通过与数据中的第一个完成时间比较来获得小时差:
select * , 24 * (Completed_Time - min(Completed_Time) over ()) as hourdiff
from sports
我想你需要从特定国家开始比赛的时差。试试下面的查询
SELECT mq.Country,
mq.Players,
(24*(to_date(mq.Completed_Time,
'DD-MM-YYYY HH') - to_date(sq.start_hr, 'DD-MM-YYYY')))+TO_NUMBER(TO_CHAR(mq.Completed_Time,'HH')) AS diff_hours
FROM sports AS mq
INNER JOIN
(SELECT Country ,
TO_DATE(min(Completed_Time),
'DD-MM-YYYY') AS start_hr
FROM sports
GROUP BY Country) AS sq
ON sq.Country = mq.Country;
我不明白,你想要的结果是什么?但是如果我理解正确,你必须有一个开始日期,并计算所有玩家从该开始日期算起的小时数。每行的间隔开始时间是多少?开始日期不在那里,因为我面临的问题是,只有完成时间在那里。那么“小时”是什么意思,这列代表什么?