【问题标题】:Obtaining a count of grouping, but still displaying all records in mysql获取分组计数,但仍然显示mysql中的所有记录
【发布时间】:2019-11-05 09:37:23
【问题描述】:

我在 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

【问题讨论】:

    标签: mysql count


    【解决方案1】:

    将计数放入子查询中

    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
    

    【讨论】:

    • @BaronVonThierry 所以,喜欢一切。
    猜你喜欢
    • 2023-03-22
    • 2023-04-01
    • 2013-01-27
    • 2020-10-19
    • 1970-01-01
    • 2014-09-03
    • 2021-08-24
    • 2018-09-26
    • 1970-01-01
    相关资源
    最近更新 更多