繁体   English   中英

分组,计数和连续圈数

[英]Group, count and concat laps

我无法解决此问题(竞赛),我需要显示每个LAP的时间。 这是时间表

 id    | race_id     | car_num | time       |
 +-----+-------------+---------+------------+
 1     | 8           | 25      | 00:09:05   |
 2     | 8           | 33      | 00:09:35   | 
 3     | 8           | 10      | 00:09:55   | 
 4     | 8           | 25      | 00:18:15   | 
 5     | 8           | 33      | 00:19:05   |
 6     | 8           | 25      | 00:39:45   | 

我试过这个查询:

SELECT 
    car_num, COUNT(car_num) as laps, race_id, concat(vlap,'-',time) as times
FROM
    (SELECT num_car, concat(time,'-',v1) vlap 
     FROM tiempos) vti
GROUP BY 
    car_num

这是必需的输出:

 car_num    | laps     | race_id | times                                        |
 +-----+-------------+---------+------------------------------------------------+
 25         | 3        | 8       | lap1 00:09:05, lap2 00:18:15, lap3 00:39:45  |
 33         | 2        | 8       | lap1 00:09:35, lap2 00:19:05                 | 
 10         | 1        | 8       | lap1 00:09:55                                | 

我晕了,请问个主意

您可以通过简单的group_concat()获得所需的大部分内容:

select car_num, count(*) as laps, race_id, group_concat(time order by id separator ', ' ) as times
from tiempos t
group by car_num, race_id;

如果您需要圈数,可以使用变量获取:

select car_num, count(*) as laps, race_id, group_concat('lap', rn, ' ', time order by id separator ', ' ) as times
from (select t.*,
             (@rn := if(@t = time, @rn + 1,
                        if(@t := time, 1, 1)
                       ) as rn
      from tiempos t cross join
           (select @rn := 0, @t := '') vars
      order by race_id, car_num, time
     ) t
group by car_num, race_id;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM