나는 SQL을 배우고 있으며 사용자 지정 보고서를 만드는 데 문제가 있습니다. 나는 학교 출석 데이터를 가지고 일하고있다. 회원제 일과 각 부재 유형에 대한 일수를 알려주는 보고서를 만들고 싶습니다.SQL - 그룹으로 나누기로 나누기
이러한 보고서를 별도로 만들었습니다.
회원 일 (일 학교를 계산하여 계산 학생의 입국 날짜와 현재 날짜 사이의 세션에서였다. 회원 일 자체에 필드로 존재하지 않음)
SELECT sum(case when cd.DATE_VALUE >= s.ENTRYDATE and cd.DATE_VALUE <= current_timestamp THEN cd.INSESSION ELSE 0 END), s.LASTFIRST
FROM CALENDAR_DAY cd,STUDENTS s
WHERE cd.SCHOOLID = 405
GROUP BY s.LASTFIRST
카운트없는 유형에 따라
SELECT s.STUDENT_NUMBER, s.LASTFIRST,SUM(CASE WHEN a.ATTENDANCE_CODEID = 2 THEN 1 ELSE 0 END),SUM(CASE WHEN a.ATTENDANCE_CODEID = 4 THEN 1 ELSE 0 END),SUM(CASE WHEN a.ATTENDANCE_CODEID = 3 THEN 1 ELSE 0 END),SUM(CASE WHEN a.ATTENDANCE_CODEID = 51 THEN 1 ELSE 0 END)
FROM ATTENDANCE a
INNER join STUDENTS s
ON a.STUDENTID = s.ID
WHERE a.att_date between '%param1%' and '%param2%'
GROUP BY s.STUDENT_NUMBER, s.LASTFIRST
문제는 동일한 보고서에이를 넣으려고하면 학생과 출석으로 인해 출석 표에 학생이 표시되는 횟수가 회원 일수에 곱해진다는 것입니다. 솔루션에 대한 내 생각은 학생이 모든 라인에 기존의 학생 정보를 중화하기 위해 출석 테이블에 나타났다 횟수에 따라이 라인
sum(case when cd.DATE_VALUE >= s.ENTRYDATE and cd.DATE_VALUE <= current_timestamp THEN cd.INSESSION ELSE 0 END)
를 나눌 수 있었다. 나는 그것을하는 방법을 이해할 수 없다. 이러한 유형의 문제에 대해서는 많이 알지 못하므로 잘 못된 트랙에서 벗어났습니다. 쉬운 해결책이 있습니다. 감사.
완벽합니다. 도와 줘서 고마워! –