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 29476 게시물 읽기
No. 29476
group by 에서 소팅(order by) 쿼리 문의
작성자
조현철
작성일
2009-12-15 11:51ⓒ
2009-12-15 11:52ⓜ
조회수
6,574

ID별 포인트 적립내역(포인트 합계)를 만들고 있는데요, 테이블은 아래와 같습니다.

 

uid, id, get_point, loss_point, date
1, aaa, 10, 0, 20091201
2, aaa, 0, 10, 20091202
3, bbb, 10, 0, 20091203
4, ccc, 50, 0, 20091204
5, aaa, 20, 0, 20091205
6, ccc, 0, 10, 20091206
...

 

결과값으로 아래를 원합니다.
ID, 현재포인트, 최근적립/사용일
ccc, 40, 20091206
aaa, 20, 20091205
bbb, 10, 20091203

 

--> 최근 적립/사용한 날짜 순으로 소팅해서 ID별로 총합계를 보여주고 싶습니다.
총합계라는건, "적립한 포인트-사용한 포인트" 입니다.

 

쿼리를 어떻게 해야 하나요?

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

일단 최근 적립/사용일 순으로 소팅해야 하니, 정렬한 서브 쿼리 결과에 대해 다시 그루핑을 해야 할 것 같습니다.

 

SELECT id, ( SUM(get_point) - SUM(loss_point) ) AS CurrentPoint FROM ( SELECT * FROM ... ORDER BY `date` DESC ) x GROUP BY id

 

추가적으로 get_point / loss_point 구분 대신에 point로 바꾸시고, loss_point인 경우는 음수 값을 주시는게 더 간략한 테이블 설계가 되리라 생각됩니다.

박현우(lqez)님이 2009-12-16 09:43에 작성한 댓글입니다.
이 댓글은 2009-12-16 09:47에 마지막으로 수정되었습니다.

다시 그룹핑 할 필요 없습니다.

max() 함수를 이용하면 가장 최근의 날짜를 구할 수 있습니다.

SELECT id, ( SUM(get_point) - SUM(loss_point) ) AS CurrentPoint, Max(date) FROM point group by id

 

+----------------------------------+
|id  |  CurrentPoint  |  Max(date) |
+----------------------------------+
|aaa |            20  |    20091215|
|bbb |            10  |    20091203|
|ccc |            40  |    20091206|
+----------------------------------+

김영준님이 2009-12-31 16:05에 작성한 댓글입니다. Edit

그런 방법이 있었군요, 잘 배우고 갑니다 ^^

박현우(lqez)님이 2010-01-11 10:41에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
29479간단한 쿼리 질문입니다.. ㅠㅠ [1]
쿼리초보ㅠㅠ
2009-12-16
6290
29478group_concat을 거꾸로 [1]
rosenc
2009-12-16
6818
29477서버간 디비 복사 질문입니다. [2]
허대성
2009-12-15
7459
29476group by 에서 소팅(order by) 쿼리 문의 [3]
조현철
2009-12-15
6574
29475쿼리 좀 합쳐주세요. [2]
정담
2009-12-14
6477
29474CentOS MySQL 설치 [1]
정현도
2009-12-14
7505
29467캐릭터셋 질문입니다. [2]
방방방
2009-12-12
7253
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.027초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다