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
운영게시판
최근게시물
DBMS Q&A 402 게시물 읽기
No. 402
그룹지정..
작성자
박정훈(fox)
작성일
2002-06-07 14:09
조회수
5,049

SELECT 아이디, 성별, AVG(나이) FROM 학생

GROUP BY 아이디

 

전 잘못된게 없다고 보는데 이렇게 하면 잘못된 쿼리문이라네요.

왜 그렇죠? ^^;

 

그리고 학생, 과목 이라는 테이블이 있다고 할때

과목에 대한 모든 학생의 국어점수를 보려고 합니다.

(이중에 시험을 안친 학생도 있습니다. 이렇게 되면

과목에는 학생의 아이디가 없습니다만 그래도 모든 학생을 다 보고 싶습니다.)

 

SELECT 학생.아이디, 학생.성별, SUM(과목.점수) FROM

학생 LEFT OUTER JOIN 과목 ON 학생.학생아이디=과목.학생아이디

WHERE 과목=국어

GROUP BY 학생.아이디, 학생.성별

 

보시는바와 같이 LEFT OUTER 조인을 하였지만

결과는 INNER JOIN 과 같은 형태의 테이블이 뿌려집니다.

WHERE 절을 빼면 괜찮구요.

 

이건 왜 그런거죠? ^^;;

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

음. 웬지 숙제 같은 느낌이 드는데요? --;

 

간단하게만 설명 드리겠습니다.

 

GROUP BY를 할 때, SELECT할 수 있는 것들은

 

1. GROUP BY에서 사용된 컬럼.

2. Aggregation Function( COUNT(), SUM(), MAX() 등의 함수)

 

뿐입니다.

 

따라서, 첫 번째 SQL은 잘못된 것이죠?

 

이유는 한번 생각해 보세요.

 

그래야 100점 짜리 레포트.... ^^

 

두 번째 질문.

 

데이터가 그렇게 입력되어 있나 보죠.

 

즉, 'WHERE 과목=국어'를 만족하는 레코드에서 '학생.학생아이디'가 NULL인 레코드가 없나 보죠.

 

outer join은 많이 안 써 봐서 이건 제가 틀렸을 수도 있겠군요.

 

그럼

허정수(wertyu)님이 2002-06-07 23:28에 작성한 댓글입니다.

아.. 그렇군요.

 

과목 테이블엔 NULL조차 없으니 당연히

 

출력이 안되었던거네요.

 

해결할 방법은 없는지.. ^^

 

ps. 숙제가 아니라 알바였습니다. 헤헤..

박정훈(fox)님이 2002-06-08 14:50에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
405질문) 테이블을 많이 만드는 것이 좋은가여? 아님.. [1]
ajacow
2002-06-10
4967
404제가 설계한 DB좀 봐주세요.. [2]
박정훈
2002-06-09
5740
403db의 정의가 몬가요?? [2]
lunani
2002-06-08
5699
402그룹지정.. [2]
박정훈
2002-06-07
5049
401질문이 있는데여... [1]
류경식
2002-06-02
4915
399데이터베이스의필요성과 사용예시에 대해 궁금합니다.. [2]
윤지혜
2002-05-31
6081
392audio 파일을 디비에 저장시... [2]
하주선
2002-05-20
5329
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2022 DSN, All rights reserved.
작업시간: 0.057초, 이곳 서비스는
	PostgreSQL v14.2로 자료를 관리합니다