고수님들 ^^ 0 10 582

by 스티브1조 [SQL Query] [2018.02.21 17:09:38]


디비는 오라클입니다

 SELECT 
        A.MEMBER_NO AS 고객번호,
        A.MEMBER_NM AS 이름, 
        COUNT(B.BUY_AMT) AS 구매횟수 
        
        FROM 
        ORDER_INFO B
        INNER JOIN MEMBER_INFO A 
        ON  B.BUY_AMT > 29999
         AND A.MEMBER_NO = B.MEMBER_NO
        GROUP BY B.BUY_AMT ,A.MEMBER_NM, A.MEMBER_NO ,B.RETURN_AMT
        ORDER BY 구매횟수 DESC
        ;

여기에다가

구매횟수에서 아래 반품횟수를 빼서 구매횟수를 출력하고싶습니다

SELECT MEMBER_NO,COUNT(ORDER_STATUS_CD) 
        FROM ORDER_INFO  
        WHERE ORDER_STATUS_CD = 'CAL' 
        AND REMAIN_AMT < 29999
        GROUP BY ORDER_STATUS_CD,MEMBER_NO ;

 

좋은 방법없을까요??ㅜㅜ

by 마농 [2018.02.21 17:52:55]

3만원 이상 구매만 해당되어야 하는 거죠?
2번 반품 쿼리는 그 조건이 없어서 틀린 듯 하네요?
1번 구매 쿼리도 Group By 가 이상하구요.
 

SELECT a.member_no           AS 고객번호
     , a.member_nm           AS 이름
     , b.buy_cnt             AS 구매횟수
     , b.rem_cnt             AS 반품횟수
     , b.buy_cnt - b.rem_cnt AS 실구매횟수
  FROM member_info a
 INNER JOIN
       (SELECT member_no
             , COUNT(*) buy_cnt
             , COUNT(CASE WHEN remain_amt < 29999
                           AND order_status_cd = 'CAL' THEN 1 END) rem_cnt
          FROM order_info
         WHERE buy_amt > 29999
         GROUP BY member_no
        ) b
    ON a.member_no = b.member_no
 ORDER BY 실구매횟수 DESC
;

 


by 스티브1조 [2018.02.21 18:18:16]

3만원이상구매한사람이면 구매횟수 올라가구요 반품 한사람order_status_cd=cal 이 잔액금액(remain_amt) 이 3만원 이하면  구매횟수에서 1을 빼주는거에요 ㅜㅜ  


by 스티브1조 [2018.02.21 18:28:23]
SELECT a.member_no           AS 고객번호
     , a.member_nm           AS 이름
     , b.buy_cnt             AS 구매횟수
     , b.rem_cnt             AS 반품횟수
     , b.buy_cnt - b.rem_cnt AS 실구매횟수
  FROM member_info a
 INNER JOIN
       (SELECT member_no
             , COUNT(*) buy_cnt
             , COUNT(CASE WHEN remain_amt < 29999
                           AND order_status_cd = 'CAL' THEN 1 END) rem_cnt
          FROM order_info
      
         GROUP BY member_no
        ) b
    ON a.member_no = b.member_no
   
 ORDER BY 실구매횟수 DESC
;

다 맞구 요기 쿼리에서  3만원 이상 구매 했을때 구매횟수가 늘어나야하거든요 ㅜㅜ


by 마농 [2018.02.22 08:15:01]

구매횟수에서 반품횟수를 차감하려면?
구매횟수에 반품횟수가 포함되어 있어야 하는 것 아닌가요?
구매횟수 따로 반품횟수 따로 조건이 서로 다르다면?
구매횟수에 포함되지 않은 반품횟수가 차감 될 수 있는데요?
반품의 기준이 구매의 기준과 동일해야 하는 것 아닌지?(3만원 이상 구매)


by 스티브1조 [2018.02.22 08:25:59]

차감해서 구매횟수를 표시하면대구요 구매횟수는 3만원이상구매시에만 구매횟수인정입니다


by 스티브1조 [2018.02.22 08:29:45]

반품은 잔액이 3만원 이하일때만 반품차감하는거구요


by 마농 [2018.02.22 08:35:12]

그건 알겠구요. 계속 같은 말 반복 안하셔도 됩니다.
제가 말하는건 다른 의미입니다.
구매에서 반품을 뺀다는 얘기는 구매한것중에서 반품된걸 뺀다는 의미 아닌가요?
그렇다면 반품은 구매한것중에 포함되어야 하죠. 아닌가요?
구매한게 아닌 것중에 반품이 있는걸 어떻게 빼나요?
예를 들면 2만원짜리 구매한걸 반품한게 있을 때
이걸 3만원 구매에서 빼면 안되죠.


by 스티브1조 [2018.02.22 09:07:40]

맞습니다 구매한거에서 반품을뺀다는겁니다 구매횟수가 3만원이상인데 잔액이 3만원이상일때는 안빼고 잔액이3만원이하이면 반품으로 간주하여 구매횟수에서 차감한다는것입니다

 

2만원짜리 구매하면 잔액이 2만원입니다

그래서 반품이랑은 상관없구요

3만5천원짜리구매하면 잔액은 3만5천원이구요

3만오천원에서 반품이 4천원이면 3만천원이므로 반품처리가 안되는겁니다 

 

죄송합니다 제가 머리가 좋지않아서요 ㅠ


by 마농 [2018.02.22 09:12:00]

그럼 제가 드린 답변 쿼리가 맞는거네요.
3만원 이상 구매 조건이 Where 절에 공통으로 들어가야 하고
반품에 대한 조건은 Case 로 처리 하면 됩니다.


by 스티브1조 [2018.02.22 09:35:55]

네 해결했습니다 감사합니다 ^^

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