고수님들의 조언 부탁드립니다.
일별자료를 합산하여 월별자료를 만든 테이블 strflowmo 을 이용하여
데이터베이스에서 다음과 같이 쿼리를 실행하면,
select val,date from strflowmo
WHERE (SELECT EXTRACT(YEAR FROM date) >= 1947) and (SELECT EXTRACT(YEAR FROM date) <= 1950) and stid = '067835';
<php 에서의 코드는
$result = pg_query($db_conn, "
SELECT val,date From strflowmo
WHERE (SELECT EXTRACT(YEAR FROM date) >= 1947) and (SELECT EXTRACT(YEAR FROM date) <= 1950) and stid = '067835'");
>
결과가 이렇게 나옵니다. 날짜가 매달 1일로 나오지만 그냥 월별자료로 간주합니다. 즉, 1947-10-01일은 그냥 1947년 10월로 간주합니다.
val date
621 1947-10-01 00:00:00-06
827 1947-11-01 00:00:00-06
827 1947-12-01 00:00:00-06
1227 1948-01-01 00:00:00-06
2969 1948-02-01 00:00:00-06
....
...
1023 1950-11-01 00:00:00-06
1593 1950-12-01 00:00:00-06
궁금한것은, 이 결과물을 이용해서 php 에서 월별 박스그래프 (Boxplot)을 만들기 위해 다음과 같은 Array 가 필요합니다.
$Q0Data = array(40, 45, 40, 30, 20, 50, 25, 44, 25, 50, 20, 30);
$Q1Data = array(55, 60, 50, 40, 38, 60, 51, 60, 51, 60, 38, 40);
$Q2Data = array(62, 70, 60, 50, 48, 70, 62, 70, 62, 70, 48, 50);
$Q3Data = array(70, 80, 65, 60, 53, 78, 69, 76, 69, 78, 53, 60);
$Q4Data = array(80, 90, 75, 70, 60, 85, 80, 84, 80, 85, 60, 70);
첫번째 $Q0Data는 최소값을 나타내고
두번째 $Q1Data는 25%을 나타내고
세번째 $Q2Data는 중간값을 나타내고
네번째 $Q3Data는 75%을 나타내고
마지막 $Q4Data는 최대값을 나타낸다고 가정했을때
쿼리 결과물을 이용하여 월별값으로 나타내고 싶습니다. 즉, 1947년에서 1950년동안의 자료를 바탕으로
$Q0Data 의 Array 값이 (1월최소값, 2월최소값, 3월최소값, 4월 최소값......12월 최소값)
....
....
$Q4Data 의 Array 값은 (1월최대값, 2월최대값,3월최대값, 4월최대값....12월 최대값) 을 표현 하고자 합니다.
다음과 같이 php에서 결과를 뽑아내긴 했는데 어떻게 매해에 발생하는 1월에서 12월달값을 고려하여 최소갑, 25%값, 중간값, 75%값, 그리고 최대값을 계산하여 Array로 만들어야 할지
모르겠습니다.
while ($row = pg_fetch_row($result)) {
$streamflow[] = $row[0];
}
도움부탁드립니다.
감사합니다.
현.
|