with t as ( select 1 col1, 1 col2 from dual union all select 2 col1, 2 col2 from dual union all select 3 col1, 1 col2 from dual union all select 4 col1, 3 col2 from dual union all select 5 col1, 4 col2 from dual union all select 6 col1, 2 col2 from dual ) select distinct a.col1, a.col1 col2 from t a where exists (select 1 from t b where a.col1 = b.col2)
--intersect 이용 select col1, col1 col2 from t intersect select col2, col2 from t
감사합니다 ㅠㅠ...
하... INTERSECT 를 이용해서 하는게 아니였네요 .. 좀더 궁리 해봐야 될것 같습니다 ...
구현방식이 딱 정해져 있는 퀴즈인가요?
질문에 제시된 MAX 는 사용될 이유가 전혀 없어 보이네요.
네 . 주어진 조건안에서만 쿼리를 작성해야 하는 경우가 있다고 하셔서 반드시 MAX함수가 들어가도록 출제된 문제 였습니다. 그냥 어거지로 MAX함수 넣고 끝내 버렸네요 ... ㅋㅋㅋㅋ
어떻게 풀이하셨는지요?
문제는 그대로 옮기신건가요? 혹시 빼먹은 것은 없는지?
문제를 단 한글자도 빠짐 없이(공백이나 오타마져도) 그대로 옮겨보세요.
네 문제 그대로 입니다.
아래가 제가 문제 풀이한 방식인대
조건에 맞게
MAX함수를 이용한거를 보자고 하신것 같아요 .
|
1
2
3
4
5
6
7
8
9
10
11
12
|
SELECT ONE.COL1
, TWO.COL2
FROM (SELECT *
FROM HRM_DB.DBO.TEST1 WITH(NOLOCK)
WHERE COL1 <= (SELECT MAX(COL1)
FROM HRM_DB.DBO.TEST1 WITH(NOLOCK))
)ONE
INNER JOIN
(SELECT DISTINCT COL2
FROM HRM_DB.DBO.TEST1 WITH(NOLOCK)
)TWO
ON ONE.COL1 = TWO.COL2
|
cs |
제가 만든 거 보다 더 의미있게 만드신 것 같은데요. 저는 의미없는 max인데용.
다만 아래 부분만 바꾸면 더 의미가 좋아지겠네요.
아.. max, distinct join을 이용해서 해당 문제를 풀어보라는 거군요~ 저는 그냥 결과 값만 나오면 되는 줄 알고 댓글 달았었네요. 저 형태로 만들어 보라고 했다면 group by와 distinct, join에 대한 이해를 해보라는 말인 것 같네요.
with t as ( select 1 col1, 1 col2 from dual union all select 2 col1, 2 col2 from dual union all select 3 col1, 1 col2 from dual union all select 4 col1, 3 col2 from dual union all select 5 col1, 4 col2 from dual union all select 6 col1, 2 col2 from dual ) select * from ( select max(col1) col1 -- max는 없어도 되는데.. 이상함 from t group by col1 ) a join ( select distinct col2 from t ) b on a.col1 = b.col2
JKSON 님 감사합니다
1. WITH(NOLOCK) 은
- 습관적으로 붙이는 것인지? 정확한 용도를 알고 사용하는것인지?
2. 사용하신 Max 쿼리는
- 무의미한 쿼리죠. 억지쿼리.
3. 제약조건이 좀더 있었으면 하는 문제입니다.
- col1 항목은 유니크하다 라든지?
- col2 항목은 col1 항목에 있는 것만 가능하다 라든지?
1.WITH(NOLOCK)은 용도를 알고 습관적으로 붙이려고 노력하고 있습니다.
2.네 .. MAX함수를 이용해서 작성하는 제약조건에서 제가 생각해낸것의 한계인것같습니다..
전혀 필요없는 쿼리이죠 ..
3.그렇게 제약조건을 가진 것으로 다시한번 문제 풀어 보겠습니다. 감사합니다.