다른행 같은 값을 기준으로 데이터 확인하는 방법을 알고 싶습니 0 5 2,230

by 곡예사 mysql [2022.12.28 14:08:00]


 

우선 테이블 예시를 보여드리도록 하겠습니다!

order_id member_id paytype regDt
00001 test1 p 2022-11-01
00001 test1 m 2022-11-01
00002 test2 p 2022-11-02
00002 test2 m 2022-11-02

 

이게 가능할지는 모르겠지만 제가 드리고싶은 질문 내용은 아래와 같습니다.

 

주문번호가 같은 행에서 p,m이 있는 데이터가 몇개인지 알고 싶습니다.

 

예를들어 00001은 2줄이 존재하는데 첫번째는 paytype이 p이고 00001의 두번째는 paytype이 m입니다.

 

이렇게 p와 m이 동시에 있는 경우가 몇개가 존재하는지 알고자 합니다..

읽어주셔서 감사합니다..

by 마농 [2022.12.28 14:42:46]
-- pp, mm, ppp, mmm 등의 자료는 없는지요?
-- 만약 없다면 카운트가 2인 것을 구하면 됩니다.
SELECT order_id
  FROM t
 GROUP BY order_id
HAVING COUNT(*) = 2
;

만약 p, m, pm 3가지 경우 이외의 자료가 존재한다면?
질문하실때 예시자료를 좀 더 다양한 형태로 제시해 주시는게 좋습니다.


by 곡예사 [2022.12.28 14:53:26]

앗.. 제가 예시를 잘못 들었습니다 ... 말씀해주신 예시는 있을 수 있습니다.

다시 테이블을 작성해보도록 하겠습니다..

order_id

member_id

patType regDt
00001 test1 p 2022-12-01
00001 test1 m 2022-12-01
00002 test1 p 2022-12-02
00003 test1 p 2022-12-03
00003 test1 m 2022-12-03

이렇게 있다고 가정했을 때 

여기서 p의 숫자를 구하고 싶은데요 조건이 있습니다..

같은 주문건에 (00001)에 p도 있고 , m도 있으면 이건 p의 갯수에 포함시키면 안됩니다.

 

위 예시에서 p의 갯수가 1로 나오는걸 희망하고 있습니다.


by 마농 [2022.12.28 14:58:35]

가능한 케이스는 p 또는 pm 두가지 경우 뿐인가요?
m 만 있다던가? p 가 두번 나온다던가? p,m 이외에 다른거 x 가 존재한다던가?


by 곡예사 [2022.12.28 15:00:44]

m의 경우 p가 선행으로 발생이된 후에만 생성 될 수 있습니다. p,m외에는 다른 값은 발생할 수 없습니다 또한 같은 order_id에 p가 연속적으로 생길 수는 없습니다 ㅎㅎ


by 마농 [2022.12.28 15:02:54]
SELECT order_id
  FROM t
 GROUP BY order_id
HAVING MIN(paytype) = 'p'
;

SELECT order_id
  FROM t
 GROUP BY order_id
HAVING COUNT(*) = 1
;

 

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