programing

결과 집합을 10개 그룹으로 분할

lastmoon 2023. 8. 30. 21:59
반응형

결과 집합을 10개 그룹으로 분할

쿼리에서 반환된 91개의 결과 세트를 가지고 있습니다.저는 이 91개의 데이터를 10개의 그룹으로 균등하게 나누고 싶습니다.예를 들어 110~18그룹 1~9그룹 219~27그룹 328~36그룹 4.
그룹 546~54에서 37~45, 그룹 655~63, 그룹 764~72, 그룹 873~81, 그룹 982~90, 그룹 10에서 row_num을 사용하여 결과 집합의 숫자 순서를 확인했습니다. 하지만 이 데이터를 10개의 그룹으로 균등하게 나누는 방법을 모르겠습니다.그것을 알아내는 것을 도와주세요! 감사합니다.

set @row_num=0;
    select t.*
    from
        (
        select
                (@row_num:=@row_num+1) AS row_num,
                total.reg_date,
                total.car_id,
                total.mcu_motspd
        from(
            select
                td.reg_date,
                td.car_id,
                td.mcu_motspd
            from
                cartracker.tracker_data td
            left join car c on (c.car_device_no = td.car_id)
            left join car_group cg on (c.car_group_no = cg.car_group_no)
            where cg.car_group_no = "1"
            group by DATE_FORMAT(td.reg_date, "%Y%M%d%h%m")
            )total
        group by DATE_FORMAT(total.reg_date, "%Y%M%d%h%m")
        ) t

결론적으로, 저는 위 쿼리에서 91개의 결과 집합을 group1, group2 등 10개의 그룹으로 나누고 싶습니다.(mysql에서 타일 기능을 시도했지만 작동하지 않았습니다) 위 쿼리의 ResultSet Image

좋아요, 여기 아이디어가 있어요.row_num 결과를 9로 나누고 다음을 수행하는 것은 어떻습니까?CEIL(천장이라고도 함) 그 위에 기능합니다.아마도, 다음과 같은 것이 있을 것입니다.

set @row_num=0;
    select CEIL(row_num/9), t.*
    from
        (
        select
                (@row_num:=@row_num+1) AS row_num,
                total.reg_date,
                total.car_id,
                total.mcu_motspd
        from(
            select
                td.reg_date,
                td.car_id,
                td.mcu_motspd
            from
                cartracker.tracker_data td
            left join car c on (c.car_device_no = td.car_id)
            left join car_group cg on (c.car_group_no = cg.car_group_no)
            where cg.car_group_no = "1"
            group by DATE_FORMAT(td.reg_date, "%Y%M%d%h%m")
            )total
        group by DATE_FORMAT(total.reg_date, "%Y%M%d%h%m")
    /*added order by*/
       ORDER BY total.reg_date, total.car_id,
        ) t

CEIL(row_num/9)1-9는 1, 10-18은 2, 19-27은 3...의 결과를 제공해야 합니다.제공된 샘플 데이터가 없으므로 https://dbfiddle.uk/ ?rdbms=del_5.5&deldle=19d23c0d22f6eb804ac458bc3a274d25의 간단한 예를 만들었습니다.

저는 또한 당신이 결과의 중심을 잡고 1-9, 10-18의 그룹에 속하는 모든 값들을 합산할 것이라고 생각했습니다. 하지만 그것은 단지 가정일 뿐입니다.하지만, 만약 당신이 그런 일을 하고 싶다면, 당신의 질문을 그에 맞게 업데이트해주세요.

언급URL : https://stackoverflow.com/questions/64583778/split-result-set-into-10-groups

반응형