programing

데이터를 통합하여 MariaDB의 다양한 값 수를 줄이려면 어떻게 해야 합니까?

lastmoon 2023. 8. 20. 12:27
반응형

데이터를 통합하여 MariaDB의 다양한 값 수를 줄이려면 어떻게 해야 합니까?

1초에 1개의 기록이 있는 풍속 데이터를 가지고 있습니다.데이터의 95% 이상이 0.36m/s의 배수라는 것을 알게 되었습니다(스크린샷 풍속 참조). 이는 계측기가 구성된 방식(아직 작동 중)의 결과입니다.

제가 하고 싶은 것은 모든 값을 0.36의 배수로 반올림하여 확률 밀도 시각적으로 생성할 수 있도록 하는 것입니다.

스크린샷의 표는 다음 코드에서 가져온 것입니다.

WITH freqCTE AS
    (
    SELECT rd.wind_speed,
        COUNT(rd.wind_speed) AS AbsFreq,
        CAST(ROUND(100. * (COUNT(rd.wind_speed)) / (SELECT COUNT(*) FROM raw_data), 3) AS DEC(4,3)) AS AbsPerc
        FROM raw_data AS rd
        GROUP BY rd.wind_speed
    )
SELECT wind_speed, AbsFreq,
    SUM(AbsFreq) OVER(ORDER BY wind_speed ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumFreq,
    AbsPerc,
    SUM(AbsPerc) OVER(ORDER BY wind_speed ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS CumPerc,
    CAST(REPEAT('.',AbsPerc*100) AS VARCHAR(200)) AS Histogram
    FROM freqCTE
    ORDER BY wind_speed;

그리고 나는 내가 이렇게 풍속을 반올림할 수 있다는 것을 압니다.

ROUND(rd.wind_speed / 0.36, 0) * 0.36

저는 CTE 내부에서 온갖 시도를 해봤고, CTE 이후에는 SET를 사용해봤지만, 제가 원하는 것을 할 수가 없었습니다.제가 정말로 보고 싶은 것은 다음과 같은 표입니다.

ws36     freq
0.00     4000
0.36     500
0.72     600
1.08     800
etc.

더 간단한 질문을 생각하고 있습니다.

SELECT ROUND(rd.wind_speed / 0.36, 0) * 0.36 as wind_speed_036,
       COUNT(*) as cnt
FROM raw_data  rd
GROUP BY wind_speed_036
ORDER BY wind_speed_036;

언급URL : https://stackoverflow.com/questions/56630373/how-do-i-coalesce-my-data-to-reduce-the-number-of-different-values-in-mariadb

반응형