Получение количества групп, но все записи с отображением в MySQL - PullRequest
0 голосов
/ 05 ноября 2019

У меня есть таблица результатов гонок в MySQL, у каждого гонщика будет строка с некоторыми общими данными - датой, местоположением, гонкой, группами, а также уникальными данными, такими как rider_id, время окончания, позиция и т. Д. Попытка добиться - это добавить столбец в эту строку, подсчитывающий количество гонщиков на группу. Я могу легко отобразить счет за дату / расу / группу, но мне все равно нужно вернуть все строки в каждой группе

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

SELECT 
    date, race, grade, rider_id, position
    COUNT(*)  AS participants
FROM
    wpsa_results
GROUP BY date, race, grade
This is the result, but I need ALL 4 records from A, ALL 8 from B etc showing each rider

Date        Race    Grade   RiderID Position Count
2019-11-03  GSR     A       5755    1        4
2019-11-03  GSR     B       4697    1        8
2019-11-03  GSR     C       7661    1        10
2019-11-03  GSR     D       4743    1        8
2019-11-03  GSR     E       2400    1        6
2019-11-03  GSR     F       4295    1        9

1 Ответ

0 голосов
/ 05 ноября 2019

Поместите счетчик в подзапрос

SELECT 
    w.date, w.race, w.grade, w.rider_id, w.position,
    (select COUNT(*) from wpsa_results w2 where w2.date = w.date and w2.race = w.race and w2.grade = w.grade) AS participants
FROM wpsa_results w;

или создайте виртуальную таблицу и присоединитесь

SELECT 
    w.date, w.race, w.grade, w.rider_id, w.position
FROM wpsa_results w
join (select w.date, w.race, w.grade, count(*) as cnt group by w.date, w.race, w.grade) w2
        on w2.date = w.date and w2.race = w.race and w2.grade = w.grade
...