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 40848 게시물 읽기
No. 40848
도와 주세욤.... 제발...
작성자
도와 주세욤
작성일
2015-07-07 10:07ⓒ
2015-07-07 17:36ⓜ
조회수
7,509

,,,

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

아우터 조인이 무의미하게 사용된 듯 합니다.
특정 목적(테이블 읽는 순서 고정 등..)을 가지고 작성된것이 아니라면 (+)기호는 없애야 하며
정말 특정 목적을 위해 의도된 쿼리라면? 주석으로 설명을 달아놓아야 합니다.
나중에 유지보수하는 사람이 (+) 때문에 고생할 수 있습니다.


SELECT lot_id
     , parameter, usl, ucl, lcl, lsl
     , data
  FROM (SELECT a.lot_id
             , b.parameter, b.usl, b.ucl, b.lcl, b.lsl
             , a.data
             , ROW_NUMBER() OVER(ORDER BY a.data DESC, a.lot_id DESC) rn
          FROM -- 이하생략 --
        )
 WHERE rn = 1
;

마농(manon94)님이 2015-07-07 10:32에 작성한 댓글입니다.

마농님.... 감사합니당..

그런데. .제가 의도하는 건....

데이터에 각 LOT 별로 PARAMETER 가 중복되어 여러게 나오잖아요?

그 값들을 각각 하나의 ROW 들로 표현하고 싶습니다.

조건은 MAX(A.DATA) 즉 값이 제일 큰 놈 중 MAX(LOT_ID) ..

즉 값이 젤 큰놈을 먼저 고 그 다음은 MAX(LOT) 인 놈을 각각 하나의 PARAMETER 로

가져 오는게 미션이랍니다.

마농님.. 부디 한번 더 부탁 드립니다.

감사합니다.

도와 주세욤님이 2015-07-07 10:58에 작성한 댓글입니다. Edit

설명이 이상합니다.
LOT 별로 여러게 나오는걸 하나의 ROW 로 표현하고 싶다?
하고서는 MAX(LOT_ID) 를 뽑는다는게 말이 안되요.
위 데이터에서 최종 나와야 하는 결과가 무엇인지?
해당 결과가 나와야하는 이유가 뭔지?

마농(manon94)님이 2015-07-07 11:14에 작성한 댓글입니다.

마농님...

정말 감사 드려요.. 그럼.. 이렇게 설명 드리면 어떻까요?

 

col1                          col2            col3

20150101                ff                  4000

20150201               ff                  3000

20150301               ff                   2000

이 값중 group by 해서 col3 중 가장 가장 큰 값을 가져 오되, col1 의 날짜가 가장 현재와 가까운 row 를

가져 오는 겁니다.

이런식으로 데이터가 구성이 되어있어욤.. 즉 col2 는 parameter 라고 보시면 되고... col1 은 lot 라고 보면... 이런식으로 데이터가 각 parameter 별로 있답니다. 이중 위 조건을 만족하는 놈만 있으면 되고욤..

이게 맞나 모르겠어욤.. ㅜㅜ

 

도와 주세욤님이 2015-07-07 13:14에 작성한 댓글입니다. Edit

col1      col2    col3
20150101    ff <- 4000
20150201    ff    3000
20150301 <- ff    2000

결과를 명확하게 보여주셔야죠...
max 값 4000 에 해당하는 ff 를 찾아 그중 최대값 20150301 을 찾아
다음과 같이 한줄로 표현하면 되는 것인지?
20150301    ff    2000
아니면 다음과 같이 마지막줄이 표현하면 되는 것인지?
20150301    ff    4000
아니면 col2 별로 1줄씩 각각 나와야 하는 것인지?
20150101    ee    2000
20150301    ff    4000
20150201    gg    3000

마농(manon94)님이 2015-07-07 13:26에 작성한 댓글입니다.
이 댓글은 2015-07-07 13:38에 마지막으로 수정되었습니다.

네. .맞습니다. 마농님..

COL2 별로 1줄식 나와야 합니다.

결과 값은 20150201 의 3000 이 나와야 합니다.

이게 제가 설명드린, 값은 MAX 이나 가장 최근 날짜의 값입니다.

이게 COL2 별로 나와야 합니당.....

죄송해요.. 잘 설명 못드려서욤.... 도움 주셔서 너무 감사 드리고요....

도와 주세욤님이 2015-07-07 13:37에 작성한 댓글입니다. Edit

엥? 20150201 의 3000 은 갑짜기 어디서 튀어나온건지..... ㅜ,.ㅡ

 

-- 그냥 단순 Group By 문제네요...
SELECT MAX(a.lot_id) lot_id
     , b.parameter, b.usl, b.ucl, b.lcl, b.lsl
     , MAX(a.data) data
  FROM -- 이하생략 --
 GROUP BY b.parameter, b.usl, b.ucl, b.lcl, b.lsl
;

마농(manon94)님이 2015-07-07 13:45에 작성한 댓글입니다.
이 댓글은 2015-07-07 13:46에 마지막으로 수정되었습니다.

좀 이상하죠?

저두욤... 이게 이상한데....

데이터가 셋이 있는데.... COL3의 값은 MAX 값으로 가져 오되..... 가장 최근 날짜의 데이터를

원하거든요

COL3 가 4000인 값이 MAX 이기 하나, 날짜로 보면 가장 나중 날짜기 때문에. 두 번째인

20150201 의 3000을 가져와야 하는 상황입니다.

ㅜㅜ 저도 이게 맞나 싶어욤...

도와 주세욤님이 2015-07-07 13:49에 작성한 댓글입니다. Edit

음.... 자꾸 헷갈리게 하지 마시구요 ^^

다음 자료 보시고 결과를 명확하게 적어주세요... 설명만 적지 마시고...

col1      col2    col3
20150101    ff <- 4000
20150201    ff    3000
20150301 <- ff    2000

결과가 어떤건가요?

왜 갑짜기... 결과가

1행도 아니고

3행도 아니고

1행과 3행이 혼합된 형태도 아니고

어중간한, 쌩뚱맞은... 2행이라고 하시는지????

아주 간단하고 쉬운 문제인데...

왔다갔다 갈피를 못잡고 있는 질문이 문제풀이를 어렵게 만들고 있습니다.

마농(manon94)님이 2015-07-07 13:53에 작성한 댓글입니다.
이 댓글은 2015-07-07 14:01에 마지막으로 수정되었습니다.

ㅋㅋㅋㅋ.. 죄송요..... ^^

그래도 끈기 있게 봐 주셔서 감사용... ^^

2행이 나오는게 맞습니다. 근데. 저도 이게 맞나 싶어요.... 이 생각이...

미션 1. .두둥...

 COL3 의 MAX 값을 출력해야 함. 그럼 값은 4000 행을 가져오는 것이 맞음.

미션 2. 두둥....

 근데. .나쁜 사용자놈이... COL1 의 날짜가 가장 빠른 놈이어야 한다고 함.

  그럼 20150301 이 맞음....

 미션 3 두둥...

  그런데.. 이 눔이.... COL3 의 값이 2000 은 MIN(최소값) 이지 않냐.. 않된다.. 합니다.

  그럼 어쩌라고.. 그랬는데.. 2000 보다 큰 값이 면서 가장 최근 날짜에 있는게..

  2행에 있지 않냐

그럼 그 데이터들을 보여줘.. 합니다. ㅜㅜ

 저 그냥 포기 하려고 합니당.. ㅜㅜ.....

 

마농님 감사합니다 ^^...

 

도와 주세욤님이 2015-07-07 14:13에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40851주차 관련해 질문있습니다. [1]
ORACLE
2015-07-08
7299
40850Database Time Spent Waiting 이게 무슨뜻인가요? [1]
염정훈
2015-07-08
7681
40849윈도우xp oracle 9i client 설치 방법좀 알려주세요 ㅜㅜ
곽정남
2015-07-07
7360
40848도와 주세욤.... 제발... [10]
도와 주세욤
2015-07-07
7509
40847오라클 쿼리 문의 [5]
초보
2015-07-07
7695
40846오라클 9i에서 11g로 업글 하고 난후 프로시저 오류 [1]
염정훈
2015-07-06
7656
40845LEFT JOIN 에서 일반적인 콤마 조인으로 변경 질문드립니다. [1]
김희성
2015-07-03
7795
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.021초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다