database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 30834 게시물 읽기
No. 30834
응시자 통계 현황 출력하기
작성자
음악
작성일
2015-04-07 10:17ⓒ
2015-04-08 09:38ⓜ
조회수
5,100

고수님들께 조언을 구하기위해 문의글을 올립니다.

 

 

특정업체를 선택하면 시험지 테이블에서 시험제목기준으로 시험장별 응시자현황 통계를 출력하려고 합니다.

예) 업체가 10(인덱스) 시험 응시자 통계 현황 출력

- 응시예정자 : 응시자 테이블 응시자 data

- 실제 응시자 수 : 응시자 테이블에서 상태값이 2, 4, 5 인 data

- 결시자 수 : 응시자 테이블에서 상태값이 1인 data

- 응시율 : 실제응시자수 / 응시예정자 * 100

- 답안제출자 수 : 응시자 답안지 테이블에서 답안제출 시간 값이 있는 data

 

paper 시험지 테이블

idx(인덱스) title(시험제목) state(상태값) co_idx(업체인덱스)
1 논술시험 5 (시험중) 10
2 수능시험 5 (시험중) 10
3 운전면허 9 (시험보류) 12
4 중식요리 9 (시험보류) 12
. . . .

 

person 응시자 테이블

 

 

idx(인덱스) id(응시자아이디) room(시험장) a_state(상태값) co_idx(업체인덱스)
1 aaaaa 1시험장 5 (시험완료) 10
2 bbbbb 3시험장 4 (시험중) 12
3 ccccc 2시험장 5 (시험완료) 10
4 ddddd 1시험장 2 (로그아웃) 10
5 eeeee 2시험장 1 (시험안봄) 12
6 fffff 2시험장 1 (시험안봄) 10
7 ggggg 3시험장 5 (시험종료) 10
8 hhhhh 1시험장 1 (시험안봄) 10
9 iiiii 2시험장 1 (시험안봄) 12
10 jjjjj 1시험장 1 (시험안봄) 10
11 kkkkk 2시험장 5 (시험종료) 10
12 mmmmm 2시험장 4 (시험중) 12
13 ooooo 2시험장 4 (시험중) 10
14 nnnnn 2시험장 1 (시험안봄) 10
. . . . .

 

answer 응시자 답안지 테이블

 

idx(인덱스) id(응시자아이디) submit(답안제출) paper_idx(시험지 인덱스)
1 aaaaa 2015-03-11 10:18:12 1
2 ggggg null 1
3 ccccc null 1
4 hhhhh 2015-03-11 10:15:12 2
5 fffff null 1
6 ddddd 2015-03-11 10:13:12 1
7 kkkkk null 2
8 jjjjj null 2
9 ooooo null 2
10 nnnnn 2015-03-11 10:09:12 2
. . . .

 

결과

 

시험제목 시험장 응시자 수 실제 응시자 수 결시자 수 응시율 답안제출자 수
논술시험 1시험장 2 2 0 100% 1
논술시험 2시험장 2 1 1 50% 0
논술시험 3시험장 1 1 0 100% 1
한식요리 1시험장 2 0 2 0% 0
한식요리 2시험장 3 2 1 33.3% 2
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

 

 

좋은 하루 보내시고 좋은 답변 부탁드립니다...

 

 

 

이 글에 대한 댓글이 총 2건 있습니다.

PPAS에서 test하여 만든겁니다.

(oracle syntax와 거의동일하게 보시면 됩니다.)

미흡하지만 참조하시길 바랍니다..

select a.title "시험제목",b.room "시험장",count(b.a_state) "응시자 수",
count(decode(b.a_state,'2',2,'4',2,'5',2)) as "실제 응시자 수",
count(decode(b.a_state,'1',1)) as "결시자 수",
trunc(count(decode(b.a_state,'2',2,'4',2,'5',2))::numeric/count(b.a_state)::numeric*100) as "응시율",
count(b.a_state)-count(decode(c.submit,null,0)) as "답안제출자 수"
from paper a,person b,answer c
where a.co_idx=b.co_idx and b.id=c.id and c.paper_idx=a.idx and b.co_idx=10
group by a.title,b.room

김주왕(kimjuking)님이 2015-04-10 20:00에 작성한 댓글입니다.
이 댓글은 2015-04-10 20:39에 마지막으로 수정되었습니다.

김주왕(kimjuking)님께서 올려주신 답글 정말 감사합니다.

덕분에 많은 도움이 되었습니다.

앞으로도 많은 도움을 주시기 바랍니다.

좋은 하루 보내시기 바랍니다.

음악님이 2015-04-13 13:31에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
30839안녕하세요 정렬 후 그룹 데이터 조회 속도가 너무 느립니다.. [2]
초보입니다.
2015-04-09
12774
30838max_allowed_packet 질문입니다.
2015-04-07
4967
30835복제 구성 관련 질문드립니다.
초보입니다
2015-04-07
5064
30834응시자 통계 현황 출력하기 [2]
음악
2015-04-07
5100
30832셀렉트 박스 sql에서 불러오기 가능한가요? [1]
이슬
2015-04-02
4559
30830동시 업데이트 방지 어떻게 하면 될까요? [1]
제록
2015-03-30
4656
30828성능모니터링
초보초보
2015-03-02
5292
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2019 DSN, All rights reserved.
작업시간: 0.074초, 이곳 서비스는
	PostgreSQL v11.5로 자료를 관리합니다