종류 별 3개씩 데이터 뽑기 0 11 1,992

by 구웃 [MySQL] [2018.03.08 17:20:28]


안녕하세요.

 

CATEGORY 컬럼이 있다치고 그 컬럼에

A

B

C

D

E

 

등등 있다고 치면 종류별로 3개씩 뽑는방법이 있을까요?

A 카테고리를 가진 데이터 3개 B카테고리를 가진 데이터3개 ...  이런식으로...

분명 방법이 있을거같은데 생각이 안나네요..

 

샘플 데이터

 

CATEGORY DATA
A 데이터1
A 데이터2
A 데이터3
A 데이터4
A 데이터5
A 데이터6
A 데이터7
B 데이터8
B 데이터9
B 데이터10
B 데이터11
B 데이터12
B 데이터13

.

.

.

~

E 까지

 

원하는 결과 (카테고리 종류별 데이터3개씩 뽑는다는 가정)

CATEGORY DATA
A 데이터1
A 데이터2
A 데이터3
B 데이터8
B 데이터9
B 데이터10

.

.

.

~E까지 3개씩

by 우리집아찌 [2018.03.08 17:21:59]

샘플 데이터와 원하는 결과물을 올려주세요.


by 구웃 [2018.03.08 17:27:19]

글 수정하였습니다!


by 우리집아찌 [2018.03.08 17:36:12]
WITH T ( CATEGORY ,	DATA ) AS (
SELECT 'A','데이터1' FROM DUAL UNION ALL
SELECT 'A','데이터2' FROM DUAL UNION ALL
SELECT 'A','데이터3' FROM DUAL UNION ALL
SELECT 'A','데이터4' FROM DUAL UNION ALL
SELECT 'A','데이터5' FROM DUAL UNION ALL
SELECT 'A','데이터6' FROM DUAL UNION ALL
SELECT 'A','데이터7' FROM DUAL UNION ALL
SELECT 'B','데이터8' FROM DUAL UNION ALL
SELECT 'B','데이터9' FROM DUAL UNION ALL
SELECT 'B','데이터10' FROM DUAL UNION ALL
SELECT 'B','데이터11' FROM DUAL UNION ALL
SELECT 'B','데이터12' FROM DUAL UNION ALL
SELECT 'B','데이터13' FROM DUAL 
)

SELECT CATEGORY ,	DATA
  FROM (SELECT CATEGORY ,	DATA
             , ROW_NUMBER() OVER(PARTITION BY CATEGORY ORDER BY ROWNUM ) RN
          FROM T 
       )
 WHERE RN <= 3 
 ORDER BY CATEGORY , RN

 


by 구웃 [2018.03.08 17:41:32]

MYSQL로 부탁드려요ㅜㅜ


by 우리집아찌 [2018.03.08 17:44:28]

헉 잘못봤네요.. 


by 마농 [2018.03.08 17:43:07]
SELECT category
     , data
  FROM (SELECT category
             , data
             , @rn := CASE WHEN @cd = category THEN @rn + 1 ELSE 1 END rn
             , @cd := category
          FROM (SELECT * FROM t ORDER BY category, 정렬기준) a
             , (SELECT @cd := '', @rn := 0) b
        ) a
 WHERE rn <= 3
;

 


by 구웃 [2018.03.08 17:48:55]

안녕하세요 마농님

지금 해보고 있는데 조인되어있는 쿼리라서 제가 잘 정리를 못하겠네요 좀더 해보고 안되면 다시 댓글 달아보겠습니다!


by 마농 [2018.03.08 17:51:32]

조인하는 쿼리 전체를 a 안에 넣고 정렬하시면 됩니다.


by 구웃 [2018.03.08 18:05:26]
CATEGORY RN @cd := CATEGORY
A 1 A
A 2 A
A 3 A

 

이런식으로 뽑히네요 ㅠㅠ

저기에서 B~ E까지 3개씩 다뽑히는결과는 못얻는건가요?


by 마농 [2018.03.08 18:18:51]

잘못 적용하신 듯 하네요.


by 구웃 [2018.03.08 18:27:20]

아 제가 조건을 걸어놓고 착각을 하고있었네요 원하는 결과 나옵니다.

감사드립니다!!

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