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
운영게시판
최근게시물
MS-SQL Q&A 1782 게시물 읽기
No. 1782
[쿼리 질문] 최고 점수의 과목 찾기
작성자
소병민(qudals)
작성일
2005-02-17 11:07
조회수
7,112

 

이름 과목 점수
aaaa 국어 50
aaaa 수학 70
bbbb 국어 80
bbbb 수학 40
cccc 국어 90
cccc 수학 80


위와 같은 데이터가 있을 때

각 사람마다 잘한 과목이 무엇인가를 찾을 수 있는 쿼리가 궁금합니다.

예를 들어 aaaa는 수학을 잘했고, bbb는 국어, ccc는 국어를 잘했으므로 다음과 같은 결과를 얻고 싶습니다.

 

이름 과목 점수
aaaa 수학 70
bbbb 국어 80
cccc 국어 90


제가 알고 있는 쿼리로는 도저히 나올 수 없습니다. 고수님들의 답변을 기다리겠습니다.

추가. 두 과목의 점수가 같을 경우에 우선순위를 두어서 하나만 나오도록 할 수 있을까요?

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

서브쿼리를 날리면 될 듯합니다.

아래는 그 과정입니다.

 

/*
drop table testTB
create table testTb
(이름 varchar(10),
과목 varchar(4),
점수 int)

insert into testTB values ('aaaa', '국어', 50)
insert into testTB values ('aaaa', '수학', 70)
insert into testTB values ('bbbb', '국어', 80 )
insert into testTB values ('bbbb', '수학', 40 )
insert into testTB values ('cccc', '국어', 90 )
insert into testTB values ('cccc', '수학', 80 )
*/

select x.이름, x.과목, x.점수 from testTb x
 where x.점수 = (select max(점수) from testTb where 이름 = x.이름)
order by 1

 

결과는 이렇게 나오네요 ^^

 

이름         과목   점수         
---------- ---- -----------
aaaa       수학   70
bbbb       국어   80
cccc       국어   90

(3개 행 적용됨)

 

어라 추가 사항이 있었네요

같은 점수일때의 처리는 그냥 몫으로 남길께요 ^^


여리님이 2005-02-17 11:37에 작성한 댓글입니다.
이 댓글은 2005-02-17 11:38에 마지막으로 수정되었습니다. Edit

간단하게 이렇게 해도 나옵니다.

select 이름,max(점수) from testtb group by 이름

최문석(heyzulnut)님이 2005-03-02 12:40에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
1785[질문]stored procedure들 정보 가져오기 [1]
솔이아빠
2005-02-18
4583
1784메모리 DB에 대한 문의 - 꼭 답변 주세요... [4]
복팅이
2005-02-18
4639
1783[질문]sql analyzer에서 자동 접속 [3]
솔이아빠
2005-02-17
2830
1782[쿼리 질문] 최고 점수의 과목 찾기 [2]
소병민
2005-02-17
7112
1781group by count [1]
초보자
2005-02-17
3812
1780[질문]데이터베이스에서 사용하는 스토어 프로시져의 목록들 가져오기 [3]
솔이아빠
2005-02-16
3908
1779마이sql에서 MsSql로의 변환 [2]
박준희
2005-02-15
2894
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다