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 27693 게시물 읽기
No. 27693
결석학생(?) 찾는 쿼리문 힌트좀 부탁드립니다.
작성자
권순원(푸르미)
작성일
2008-07-23 16:09
조회수
3,853

1.테이블 A

날짜시간(DateTime), 학생ID, ...
2008-07-20 08:00:00, 3
2008-07-20 08:00:01, 5
2008-07-20 08:00:40, 12
2008-07-20 08:00:03, 14
2008-07-20 08:00:40, 54
.
.

2.테이블 B
학생 테이블
학생ID, 이름, 전화번호


이렇게 있습니다.

관리자가 검색을 해서 2008-07-21에 결석한 학생을 찾으려고(리스팅)합니다.
다음과 같이 나오는 것을 원하는 데요...
결석일수는 검색일 이전 부터 안나온 날짜 (즉 20, 21일 모두 안나왔으면 2일)


학생ID, 이름, 결석일수
1, 홍길동, 1일
2, 김개똥, 2일
.
.
.
이렇게 해서 장기 결석한 사람은 SMS보내기등등 하려고 합니다.
조그마한 힌트라도 부탁드립니다.

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

create table attnd( att_time datetime, std_id int );
create table student( std_id int, std_name varchar(4) );

insert into student(std_id, std_name) values( 3, 'hong' );
insert into student(std_id, std_name) values( 5, 'kim' );

insert into attnd( att_time, std_id ) values ('2008-07-19 08:00:00', 3);
insert into attnd( att_time, std_id ) values ('2008-07-20 08:00:00', 3);
insert into attnd( att_time, std_id ) values ('2008-07-20 08:00:01', 5);


--원하는 날이 2008-07-20 이라고 가정했을때 해당월에 결석한 횟수 역순으로 학생아이디, 학생이름, 결석횟수 출력
select attnd.std_id, student.std_name, datediff( date_add( '2008-07-20', interval 1 day ), date_format( '2008-07-20', '%Y-%m-01' ) ) - count( distinct date( att_time ) ) as absnt
from attnd inner join student on attnd.std_id = student.std_id
where date_format( '2008-07-20', '%Y-%m-01' ) <= att_time and att_time < date_add( '2008-07-20', interval 1 day )
group by attnd.std_id, student.std_name
order by absnt desc;

우선 where절: 해당월 1일부터 20일까지의 data로 한정 (여기에는 7월 20일 23시 59분에 출석을 했어도 해당 일에는 출석을한 것으로 가정)

absnt: 크게 2부분으로 나뉘는데
(1) datediff( date_add( '2008-07-20', interval 1 day ), date_format( '2008-07-20', '%Y-%m-01' ) ): 이부분은 해당월 1일부터 오늘까지 날수(당연히 토요일 일요일 같은 개념은 없음 그냥 날짜를 셈)
(2) count( distinct date( att_time ) ) : 학생별로 group by 되어 있으므로 출석한 날을 셈
(1)에서 (2)를 빼서 결석한 횟수를 구한 것이 absnt

그럼 대충의 힌트는 드린거죠? *^_^*

우욱님이 2008-07-23 17:53에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
27697이런 질문을 여기에 올려도 될까 모르겠는대... [2]
김지인
2008-07-25
3950
27696MySQL 4.0.26 을 쓰고있는데요. character set 설정때문에 질문드립니다. [2]
송은우
2008-07-24
4610
27694mysql 저장데이터 관련 질문입니다.. [4]
김윤정
2008-07-23
4152
27693결석학생(?) 찾는 쿼리문 힌트좀 부탁드립니다. [1]
권순원
2008-07-23
3853
27690답변이 없어서 다시 질문 올립니다. [4]
제로당
2008-07-22
4089
27689auto_increment 항목 질문 입니다. [4]
유승효
2008-07-22
3691
27688카테고리별 최근글 가져오기 쿼리좀 봐주세요 --; [1]
이지은
2008-07-22
4010
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다