평균값구하기 0 5 580

by 날아라! [MySQL] [2019.04.30 13:23:56]


20190430_131936.png (3,884Bytes)
20190430_153032.png (17,346Bytes)

안녕하세요.

한테이블에서 6개월치의 값들을 노출시키며 sIndex의 평균값을 구하고자는 부분의 조언좀 부탁드립니다.

잘못된 부분 지적부탁드립니다. 

     SELECT Date
             , sIndex 
      FROM ItemsIndex 
     WHERE itemsDate BETWEEN '201810' AND '20190430'
     GROUP BY LEFT(Date,6)
     ORDER BY DateDESC 

by 마농 [2019.04.30 13:40:20]

1. 조건 기간 오류 : 6개월인데 7개월 조회.
2. 조회 목적은 어디로? : 평균을 구하는 부분이 안보임.
3. 구문 오류 : 띄어쓰기 오류(DateDESC)
4. 컬럼명 확인
  - date 등의 시스템 예약어를 사용하는 것은 좋지 않음
  - 컬럼명이 왔다 갔다 함
5. 그룹바이 사용법 표준 위배
  - 그룹바이 기준항목이 아닌 항목은 집계함수 없이 단독 사용 불가
  - MySQL 에서만 오류 안나는 비표준 구문
  - 의미가 모호한 구문.
6. 모호한 질문 : 평균에 대한 기준이 모호함


by 날아라! [2019.04.30 14:17:59]

세심한 답변감사합니다. 급한마음에 적다보니 오타 및 잘못된 부분이 많았네요.

 

쿼리부분은 아래와같습니다.

6개월치의 값들을 구해서 해당값들을 그래프로 표현과 동시에 itemsIndex의 평균값을 구하고자 하는내용입니다.

잘못된부분 지적부탁드립니다.

SELECT itemsDate
         , itemsIndex
         , AVG(itemsIndex) AS t
      FROM allItemsIndex
     WHERE itemsDate BETWEEN '201810' AND '201904'
     GROUP BY LEFT(itemsDate,6)
     ORDER BY itemsDate DESC


by 마농 [2019.04.30 14:22:14]

네. 잘못된 부분은 이미 지적해 드렸습니다.
 - 5번 항목 확인 바랍니다.

SELECT LEFT(itemsDate, 6) ym
     , AVG(itemsIndex) t
  FROM AllItemsIndex 
 WHERE itemsDate BETWEEN '201810' AND '201904'
 GROUP BY LEFT(itemsDate, 6)
 ORDER BY ym DESC
;

 


by 날아라! [2019.04.30 15:33:45]

답변감사합니다. 궁극적으로 도출되어야할 결과물은 위의 내용적은것중

2번째 이미지 형태입니다.

즉, 월별평균과 종합지수라고 해서 6개월치의 평균값이였습니다.

그리고 그룹바이절은 짧은지식의 소유자인 저로서 어떻게 해야될지 애매하네요 ㅡㅡ

많은도움되었습니다. 알려주신정보로 열심히 작업해보겠습니다.^^

 


by 마농 [2019.04.30 15:47:37]

1. 월별 평균인가요? 6개월 전체 평균인가요?
 - 월별 평균과 6개월 전체 평균이 모두 필요하다면?
 - 그 기준이 다르므로 각각 별도 쿼리로 조회하시면 됩니다.
2. 월별 평균을 보여 줄 때 왜 일자를 보여주니요? 월만 보여주면 되는데?
 - 이부분이 모호한 부분입니다.
 - 월의 여러날 중 어떤날을 보여줄 지 기준이 명확해야 합니다.
 - 매월1일? 매월말일? 매월 가장 큰 일자? 가장 작은일자? 등의 명확한 기준
3. 혹시 월별로 1건씩만 있는건 아닌가요?
 - 이러면 그룹바이 할 필요가 없는 부분입니다.
4. 그래프로 표현하려면?
 - 그래프에서 필요로 하는 양식이 있을 것입니다.
 - 해당 양식의 형태에 따라 쿼리 형태는 달라질 것입니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입