"agent_id"가 주어지면 에이전트가 평가 중에 응답 한 질문 목록을 제공하는 (Oracle) SQL 쿼리를 작성하려고합니다. 상담원이 그 질문에 대답 한 모든 시간에 평균 점수.SQL 쿼리 (조인의 잘못된 사용)
참고 : 여러 직원 (저장소 수준에서 쿼리 할 수 있도록)을 지원할 수 있도록 쿼리를 디자인하여 where 절의 "IN"조건을 디자인하려고했습니다.
select question.question_id as questionId,
((sum(answer.answer)/count(answer.answer)) * 100) as avgScore
from SPMADMIN.SPM_QC_ASSESSMENT_ANSWER answer
join SPMADMIN.SPM_QC_QUESTION question
on answer.question_id = question.question_id
join SPMADMIN.SPM_QC_ASSESSMENT assessment
on answer.assessment_id = assessment.assessment_id
join SPMADMIN.SPM_QC_SUB_GROUP_TYPE sub_group
on question.sub_group_type_id = sub_group.sub_group_id
join SPMADMIN.SPM_QC_GROUP_TYPE theGroup
on sub_group.group_id = theGroup.group_id
where question.question_id in (select distinct question2.question_id
from SPMADMIN.SPM_QC_QUESTION question2
)
and question.bool_yn_active_flag = 'Y'
and assessment.agent_id in (?)
and answer.answer is not null
order by theGroup.page_order asc,
sub_group.group_order asc,
question.sub_group_order asc
은 기본적으로 내가보고 싶은 것 : 여기
는 지금까지이 무엇 그 직원이 지금까지 응답 한 모든 질문과 질문 인덱스의 목록에 있는지|questionId|avgScore|
| 1 | 100 |
| 2 | 50 |
| 3 | 75 |
이러한 자신의 응답 한 모든 시간에 평균 점수.
내가 실행하면, "ORA-00937 : 단일 그룹 그룹 기능이 아닙니다"오류가 발생합니다. 내가 추가 한 "그룹화 기준"절의 조합은 최소한 도움이되지 않았습니다.
question.question_id as questionId,
일부를 제거하면 정상적으로 실행되지만 평균 점수는 모두 개입니다. 나는 그것을 질문으로 세분화 할 필요가있다.
어떤 도움이나 조언이라도 대단히 감사하겠습니다.
당신은'GROUP BY question.question_id ORDER BY question.question_id'을 시도 했습니까? – Lamak
해결책은 Lamak이 제안한 것입니다 :'GROUP BY question.question_id' (ORDER BY 절 앞에). 위의 예에서 옵티마이 저 계획에 영향을 미치지 않는 한 SELECT 목록에없는 표현식으로 정렬 할 필요가 없습니다. – spencer7593