• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

select절에서 함수 사용할 때 질문이 있습니다.

22.06.06 21:34 작성 조회수 127

1

안녕하세요, 

select절에서 함수를 쓸 때 궁금한 점이 있습니다.

1. select supplierID, avg(price)
2. select supplierID, categoryID, avg(price) 
3. select distinct CategoryID, avg(distinct CategoryID)

1. 예를 들어 1번처럼 함수를 사용한다고 치면 두 번째에 작성된 함수의 집계 대상은 자연스럽게 앞의 컬럼이 되는걸까요?

2. 만약  2번처럼 사용하게 되면 집계함수와 가장 가깝게 있는 컬럼을 계산해서 출력하는 걸까요? 

3. 2번 질문과 연관된 질문인데요, 왜 3번 구문은 실행이 안 되는걸까요? 카테고리 아이디와 공급자 아이디가 다른 특성이 있는 것 같은데 실행했을 때 결과값이 하나 밖에 나오지 않아, 어떤 차이점이 있는건지도 궁금합니다. 

답변 2

·

답변을 작성해보세요.

1

오민영님의 프로필

오민영

질문자

2022.06.07

답변 감사합니다 선생님!
1, 2 번은 해결이 되었습니다.

3번은 8:59에 나오는 예시를 풀다 생각하게 된 케이스였는데, 제가 혼자 생각하다 이상한 케이스를 생각한 것 같습니다. 이 부분은 질문 취소(?) 하겠습니다!ㅎㅎ

0

Joe님의 프로필

Joe

지식공유자

2022.06.07

 

안녕하세요 민영님

외부에 있어서 실행을 직접 해보지는 못했는데 먼저 코드로만 보기에 답변드릴 수 있는 것을 먼저 드립니다!

 

 

1. 예를 들어 1번처럼 함수를 사용한다고 치면 두 번째에 작성된 함수의 집계 대상은 자연스럽게 앞의 컬럼이 되는걸까요?

  > 그루핑을 해주시지 않는다면 (Group By) 앞의 컬럼은 집계기준 대상이 자연스럽게 되지 않아요.

  > 다른 DB에서는 아마 실행 자체가 안될텐데, 만약 실행이 된다면 해당 컬럼 (여기서는 supplierID)의 값 중 가장 먼저 발견되는 값이 표시가 될 뿐이지, 기준으로서의 값으로 표시되는 것은 아닙니다!

2. 만약  2번처럼 사용하게 되면 집계함수와 가장 가깝게 있는 컬럼을 계산해서 출력하는 걸까요? 

  > 2번 역시 1번의 설명과 동일합니다! 보이기엔 기준이 설정된 것 처럼 보이나, 그저 맨 첫번째 값이 표시되고 있을 뿐일거에요.

  > group by의 작동원리에 대한 영상을 다음 강의에서 제작한 것이 있는데, 그 내용을 이번주 내로 이 질문댓에 추가해둘게요. 참고해주시면 이해에 도움 될 것 같습니다!

3. 2번 질문과 연관된 질문인데요, 왜 3번 구문은 실행이 안 되는걸까요? 카테고리 아이디와 공급자 아이디가 다른 특성이 있는 것 같은데 실행했을 때 결과값이 하나 밖에 나오지 않아, 어떤 차이점이 있는건지도 궁금합니다. 

  > 민영님 혹시 3번은 어떤 테이블에 대한 select 문일까요?

  > select distinct CategoryID, avg(distinct CategoryID) 의 실행 내용에서 의도하신 것은 카테고리ID별 평균 카테고리ID의 값으로 보이는데 맞을까요?