텍스트 입력된 row 값들의 text 평균(avg) 텍스트를 구할수 있을까요?

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
텍스트 입력된 row 값들의 text 평균(avg) 텍스트를 구할수 있을까요?

QA

텍스트 입력된 row 값들의 text 평균(avg) 텍스트를 구할수 있을까요?

본문

안녕하세요
mysql db 에

table name : test
<row data>
date        time    person
20221219  121223  사람1
20221219  112223  사람2
20221219  111223  사람3
20221219  101123  사람1
20221219  100923  사람3
20221219  100223  사람1

select avg(person) from test
해 보았는데 숫자 값이 아니라서 그런지 text 값은 avg 값이 0으로만 리턴되던데요
어떻게 하면 위 형식의 데이터에서 평균 데이터 텍스트를 뽑을 수 있나요?

즉 avg는 사람3 이 뽑혀야 하는데 안되어서 문의드립니다.

 

min(person) 은 사람2
max(person) 은 사람1 은 뽑힙니다.

귀한 답변 부탁드립니다.
감사합니다.

이 질문에 댓글 쓰기 :

답변 4

select concat('사람', avg(right(person, 1))) from test

date        time    wind
20221219  121223  북풍
20221219  112223  남서풍
20221219  111223  북서풍
20221219  101123  남동풍
20221219  100923  남동풍
20221219  100223  남서풍
20221219  100221  남풍
20221219  100211  남동풍
20221219  100141  남풍
이런씩으로 바람 방향같은 경우는 어떻게 하면 좋을까요?

mysql의 max, min은 문자열을 사용할 경우

해당 열에 정의한 정렬 순서에서 가장 높고 낮은 값을 찾아줍니다.

하지만 avg 함수의 경우 문자열은 평균치를 구할 수 없습니다.

가능한 방법은 없나요? 소스로 다 읽어들여서 변수 처리하는 방법도 잘 모르겠네요..

date        time    wind
20221219  121223  북풍
20221219  112223  남서풍
20221219  111223  북서풍
20221219  101123  남동풍
20221219  100923  남동풍
20221219  100223  남서풍
20221219  100221  남풍
20221219  100211  남동풍
20221219  100141  남풍

숫자로 치환해서 avg 구한뒤에 다시 text 로 값을 변수로 변환하는 방법도 가능한가요?

windNum 정도의 필드를 추가하시고요.

북풍은 0, 동풍은 90, 남풍은 180, 서풍은 270,

북동풍은 45, 남동풍은 135 등으로 이 필드를 세팅해 주시고요.

그리고서 이 필드의 평균을 추출하신 후 text로 변환을 하시면 될 것 같네요.

1. select distinct wind from test 하시면 wind 종류만 나오겠죠.

while ( 각_wind종류 ) {

    select count(*) from test where wind = '각_wind종류' 하여 건수를 추출하고,

    $windKindArray[각_wind종류] 배열에 합산을 해 줍니다.

}

2. 그러고나면 저 배열은

$windKindArray[동풍] = 3;

$windKindArray[북동풍] = 7;

$windKindArray[남동풍] = 2;

... 등이 되겠죠.

3. 위 3건만 있다고 할 때 배열의 합은 12이고 평균은 4입니다.

4와 가장 가까운 건수의 바람종류를 추출하시면 3건인 동풍이 되겠지요.

최다건수는 북동풍이고 최소건수는 남동풍이겠고요.

즉 이 수치는 가장 많은 쪽으로 분 풍향, 가장 적은 쪽으로 분 풍향, 그리고 가장 중간치로 분 풍향을

구하는 거겠네요.

원하시는 방향이 맞나요? 아니더라도 원하는 값을 구하는 데 참고가 되면 좋겠네요. 

 

 

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 124,512 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT