Строки группы Mysql - PullRequest
       5

Строки группы Mysql

0 голосов
/ 30 сентября 2019

У меня есть таблица с: Id (id райдера) Время (это время, которое он совершил) Сессия (номер сеанса, где было проведено время)

idlap   idRider session time
1        45652    1      4
2        54645    1      2
3        45652    2      2
4        54582    2      1
5        51284    1      3
6        54582    1      3
7        54645    2      4
8        51284    2      5
9        54582    2      2

Интересно, как запросить вMySQL результат, подобный следующему:

idRider   |fast sesion   |  count laps
45652     |     2        |     1
54645     |     1        |     1
51284     |     3        |     1
54582     |     2        |     2

Запрос должен возвращаться в том сеансе, в котором гонщик получил лучшее время (быстрый сеанс), и подсчитывать количество кругов (выполненных в быстром сеансе), сгруппированных по idRider. Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 сентября 2019

вы можете использовать синтаксис MIN sql следующим образом

    SELECT `idRider`, MIN(`time`) as `fast session`,`session` as `count lap` 
      FROM `race` 
  GROUP BY `idRider` 
  ORDER BY `session`;
0 голосов
/ 30 сентября 2019

Этот запрос даст вам результаты, которые вы хотите. Он присоединяет таблицу laps к минимальному времени и количеству кругов на гонщика за сеанс, а затем к минимальному времени на гонщика, чтобы получить самый быстрый сеанс:

SELECT l.idRider, l.session, l.time, s.numlaps
FROM laps l
JOIN (SELECT idRider, `session`, MIN(time) AS fastest, COUNT(*) AS numlaps
      FROM laps
      GROUP BY idRider, `session`) s ON s.idRider = l.idRider AND s.session = l.session AND s.fastest = l.time
JOIN (SELECT idRider, MIN(time) AS fastest
      FROM laps
      GROUP BY idRider) f ON f.idRider = s.idRider AND f.fastest = s.fastest
ORDER BY idRider

Вывод:

idRider session time    numlaps
45652   2       2       1
51284   1       3       1
54582   2       1       2
54645   1       2       1

Демонстрация на dbfiddle

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