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;

我不明白,你想要的结果是什么?但是如果我理解正确,你必须有一个开始日期,并计算所有玩家从该开始日期算起的小时数。每行的间隔开始时间是多少?开始日期不在那里,因为我面临的问题是,只有完成时间在那里。那么“小时”是什么意思,这列代表什么?