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
운영게시판
최근게시물
Oracle Q&A 24838 게시물 읽기
No. 24838
원하는 레코드만 뽑아오기
작성자
이태수(nuduli)
작성일
2005-11-14 11:03
조회수
1,519

테이블에서

컬럼수가 10개 정도일때

하나의 컬럼을 기준으로

레코드를 뽑아내고 십습니다.

 

테이블은

 

일련번호 이름 학기 수학점수 .......................

----------------------------------------

1 이태수 1학기 90

2 이태수 2학기 95

3 이덕기 1학기 92

4 이덕기 2학기 90

5 이덕기 3학기 80

6 이명섭 1학기 99

 

일경우 각 이름별로 수학점수가 최고인 레코드만 뽑고 싶습니다.

어떻게 하면 최적으로 뽑아낼 수 잇는지.......

 

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

 

SELECT MAX(수학점수) FROM 테이블

GROUP BY 이름

 

혹 이걸 말씀하시는 건지....

김강환(hashtable)님이 2005-11-14 11:26에 작성한 댓글입니다.

레코드를 뽑아올때 모든 컬럼의 데이타를

뽑아오고 싶습니다.

 

GROUP BY 이름 으로 하면

이름 컬럼하고 MAX(수학점수) 이외의 컬럼은

선택이 안되더군요~

제가 잘못한건가여

 

SELECT 일련번호, 이름, 학기, MAX(수학점수) 등등

을 뽑아오려 합니다.

 

 

이태수(nuduli)님이 2005-11-14 13:12에 작성한 댓글입니다.

테이블의 전체 레코드를 불러오면서 각 이름의 수학 최고점수를 가져오고 싶다는 말씀이시군요.

 

그렇다면 테이블을 한번 읽는 것으로는 불가능합니다. 두번 읽어야 합니다. 즉, 한번은 전체 레코드를 읽기 위해,또한번은 각 이름당 최고 수학점수를 얻기 위해...

 

SELECT *

FROM

(SELECT 일련번호,이름,학기,수학점수,기타

FROM 테이블) A,

(SELECT 이름,MAX(수학점수) 수학최고점수 FROM 테이블

GROUP BY 이름) B

WHERE A.이름=B.이름

 

이렇게 쿼리를 구하해야 할 것입니다. 대신 각각의 레코드마다 동일인에 대하여서는 동일한 최고수학점수가 나오겠군요.

 

일련번호 이름 학기 수학점수 최소수학점수

----------------------------------------

1            이태수     1학기      90    95

2            이태수     2학기     95    95

3            이덕기     1학기     92     95

4            이덕기     2학기     90     90

5            이덕기     3학기     80     90

6            이명섭    1학기      99    99

 

테이블과 최고수학점수 테이블이 다:1의 관계이므로 이런 식으로 밖에 나올 수 없을 것 같습니다.

김강환(hashtable)님이 2005-11-14 14:06에 작성한 댓글입니다.

 

SELECT 일련번호, 이름, 학기, MAX(수학점수)

FROM 테이블명

GROUP BY 일련번호, 이름, 학기;

 

이러면 되는거 아닌가요?

콩순이님이 2005-11-14 15:08에 작성한 댓글입니다. Edit
SELECT 일련번호, 이름, 학기, 수학점수
  FROM (SELECT 일련번호, 이름, 학기, 수학점수,
               ROW_NUMBER () OVER (PARTITION BY 이름 ORDER BY 수학점수 DESC)
                                                                           rn
          FROM 테이블명)
 WHERE rn = 1

 

-- SQL 쿼리 질문은 SQL 까페에서... http://cafe.daum.net/oraclesqltuning

 

장진주(zozogirl)님이 2005-11-14 15:15에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
24842shared pool 과 LRU 메카니즘에 대한 조언을 구합니다. [1]
김진성
2005-11-14
1196
24841등수뽑는 간단한 커리 조언좀 바랍니다. [4]
김진완
2005-11-14
1455
24839Oracle DB INSERT등 이벤트 발생시 mysql DB로
신영진
2005-11-14
880
24838원하는 레코드만 뽑아오기 [5]
이태수
2005-11-14
1519
24837즉시백업 가능 예약백업 안됨 ㅠㅠ
신동규
2005-11-14
764
24836pl/sql에서 out 파라메터는 하나만 써야 하나요? [1]
왕초보p군
2005-11-14
890
24835insert시 무결성 에러 해결방법좀 알려주세요.. [7]
박승규
2005-11-14
4932
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다