「agent_id」を指定すると、エージェントが評価中に回答した質問のリストと、エージェントが回答したすべての時間の平均スコアを取得する (Oracle) 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: 単一グループのグループ関数ではありません」というエラーが表示されます。私が追加した「group by」句の組み合わせは、まったく役に立ちませんでした。
question.question_id as questionId,
選択の一部を削除して実行すると、正常に実行されますが、すべての質問の平均スコアが表示されます。質問ごとに分類する必要があります。
どんな助けや指針も大歓迎です。