안녕하세요 쿼리를 작성하다가 큰 고민이 생겼습니다. 0 7 1,272

by 소는누가키워 [SQL Query] [2018.10.24 12:28:24]


WITH t AS
(SELECT 1 AS cnt FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 3 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual)
SELECT * FROM t;

데이터가 이렇게 구성되어 있습니다.

 

1,2,3,1,2,1,2 순서이면 맨 마지막 1,2 를 가져 오고 싶습니다.

1,2,3,1,2,[1,2] 대괗호 쳐진 저부분을요.. 무슨 방법 없을까요 ㅠㅠ

by 마농 [2018.10.24 13:12:05]

1. 예시 자료 정렬
  - 값만 있고 정렬 기준이 없네요?
  - 정렬기준이 있어야만 하는 문제입니다.
2. 예시 자료 패턴
  - 항상 1로 시작헤서 1씩 증가하나요? (1,2,3)
  - 2로 시작한다거나? (2,3,4)
  - 2에서 4로 넘어간다거나 하는 자료는 없나요? (1,2,4)


by 아발란체 [2018.10.24 13:20:56]
WITH T AS (
	SELECT 1 cnt FROM DUAL UNION ALL
	SELECT 2 FROM DUAL UNION ALL
	SELECT 3 FROM DUAL UNION ALL
	SELECT 1 FROM DUAL UNION ALL
	SELECT 2 FROM DUAL UNION ALL
	SELECT 1 FROM DUAL UNION ALL
	SELECT 2 FROM DUAL
)
SELECT cnt, no FROM T, (SELECT @temp := 0) T2 ORDER BY @temp := @temp + 1 DESC LIMIT 2

 


by 아발란체 [2018.10.24 13:44:06]

죄송합니다. MySQL로 봤습니다.

SQL이라면 정렬 기준으로 내림차순 정렬 후 TOP-N 하면 될 것 같습니다.


by 우리집아찌 [2018.10.24 14:19:40]

MY-SQL 도 DUAL 이 있나보네요.. 신기..


by 우리집아찌 [2018.10.24 13:26:54]
WITH t AS
(SELECT 1 AS cnt FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 3 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual)


SELECT * 
  FROM  (SELECT ROW_NUMBER() OVER(ORDER BY ROWNUM DESC ) RN
             , T.* 
          FROM T
        ) 
  WHERE RN <= 2 

 


by 소는누가키워 [2018.10.24 13:55:32]

겨우 했습니다. 감사합니다

 

WITH t AS
(SELECT 1 AS cnt FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 3 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual UNION ALL
SELECT 1 FROM dual UNION ALL
SELECT 2 FROM dual)
SELECT * FROM 
(SELECT ROWNUM rn, cnt FROM t) tt
WHERE tt.rn >=
(SELECT MAX(ee) FROM
(SELECT ROWNUM AS ee, cnt FROM t 
GROUP BY ROWNUM, cnt
HAVING cnt = 1));


by 마농 [2018.10.24 14:00:30]

단순 rownum 이 아닌 뭔가 정렬 기준 항목이 있을 것 같습니다.
해당 항목을 MAX 로 가져와 이용하시는 게 좋습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입