에 이전의 MySQL의 스크립트를 변환 : 내가 선생님을 포함하는 새로운 요약 테이블을 (선생님)을 생성 평균, 년을 득점 할처럼 내가 반복 예를 들어, 데이터 (결과 테이블)이 포스트 그레스 9.5
year,teacher, score, class, state
2016, Jones, 80, math 102, NC
2016, Smith, 66, history, KY
2016, Jones, 40, math 101, SC
2014, Jones, 60, science, AK
하고, 교사의 지시 클래스 :
SELECT
teacher, class,
AVG(case when class rlike 'match' THEN score END) tlevel_avg,
GROUP_CONCAT(DISTINCT(state) order by state SEPARATOR ' ')
FROM results
group by teacher
order by tlevel_avg desc
where year like '2012'
그것은 전자 :
teacher, average, class, state
Jones, 60, 2016, math, NC SC
내 원래 (이상) MySQL의 스크립트와 유사한 모습 xported to file.
내가 포스트 그레스와 같은 결과를 얻을을 시도했지만
(I 어디 교사 값없이 평균에 대한 선택을 생성하기 때문에 presumabley) 나는 각각 동일한 데이터를 가진 유일한 교사를 얻을 나는 어떻게 확실하지 않다 특정 교사와 관련된 평균이되도록이 쿼리를 구성합니다.
SELECT distinct teacher,
(select AVG(CASE when results.class SIMILAR TO '%math%' THEN results.score END) as training_level_avg from results)
(select AVG(CASE when results.class SIMILAR TO '%science%' THEN results.score END) as training_level_avg from results)
FROM RESULTS
WHERE teacher NOT LIKE '%temporary%'
AND results.year = '2011'
GROUP by results.teacher
은 주로 내가 일년에 주어진 교사에 의해 그룹화 클래스의 모든 occurance에 대한 제대로 계산 된 평균으로 반환 된 데이터를 얻기 위해 노력하고 있어요,하지만 난 또 다른 '교사'테이블에이 결과를 작성해야합니다 (보너스 질문).
같이하고 싶은 내 고비에 걸쳐 대단히 감사합니다
'group_concat()'을'string_agg()'로 대체하고 원하는 것을 줄 수있는'class by teacher, class'를 사용한다면. –