데이터베이스 개발자 질문과 답변 게시판
안녕하세요 MSSQL에 입문한지 얼마안된 초보입니다.
질문이 있습니다.
테이블 모양은 대략
-----------------------------------------------------------------------------
NAME SCORE TIME ETC
-----------------------------------------------------------------------------
아이유 55 12:20:14 열심히
소희 24 12:23:11 어쩌다 (요거 안나오게)
아이유 32 12:40:23 어랏 (요거도 안나오게)
현아 72 13:11:23 글쿤
태연 12 13:34:12 ㅎㅎㅎ
유이 42 13:55:10 ㅋㅋㅋ
소희 66 14:12:22 여기까지
.
.
.
.
이런식으로 자료가 있습니다.
한사람이 여러 내용을 가지고 있습니다.
PK 및 UNIQ 값은 없습니다.
여기에서 각 사람별 최고의 스코어와
거에 따른 시간과 ETC 값을 가져 오고 싶은데
쉬워 보이는데 아무리 돌을 굴려 봐도 안되는군요.
어떻게 하면 좋을까요..
고수님들의 도움을 부탁드립니다.
Comment 4
-
History
2012.12.03 21:37
-
History
2012.12.03 21:41
Select NAME , tmp3.NAME , tmp3.SCORE , tmp3.TIME , tmp3.ETC from table명 as tmp1
outer apply ( select top 1 tmp2.NAME , tmp2.SCORE , tmp2.TIME , tmp2.ETC from table명 as tmp2
where tmp2.NAME = tmp1.name order by tmp2.score desc ) as tmp3
group by name
-
카윗
2012.12.03 23:13
감사합니다. 조금 수정하니 되네요.
-
엘리엘1
2012.12.05 12:26
CREATE TABLE t1
(
name VARCHAR(24),
score INT,
descripter VARCHAR(32),
regdate SMALLDATETIME CONSTRAINT df_regdate DEFAULT(Getdate())
)
GO
INSERT t1
(name,
score,
descripter)
SELECT 'AA', 20, 'AA20' UNION ALL
SELECT 'AA', 40, 'AA40' UNION ALL
SELECT 'BB', 30, 'BB30' UNION ALL
SELECT 'BB', 50, 'BB50' UNION ALL
SELECT 'CC', 20, 'CC20'
go
SELECT T.*
FROM t1 AS T
JOIN (SELECT name,
Max(score) AS SCORE
FROM t1
GROUP BY name) A
ON T.name = A.name
AND T.score = A.score(주의)한 이름에 최고 점수가 둘이상 있으면 안되겠죠.
Select NAME , Max(SCORE) from table명 group by name