조건 2개인 쿼리를 짜야하는데 도와주실수있나요 ? 1 3 1,503

by 힘내자 sql 쿼리 select [2021.04.20 21:28:17]


sql 짜는 것 좀 도와주세요 ㅠㅠ

테이블 A가 있습니다. 컬럼이 3개 NO, TAG, VALUE 가 있는데

NO TAG VALUE
1 A 250
1 A 250
1 B 500
2 A 200
2 A 200
2 B 500

 예를 들면 값이 이렇습니다.

이때 

no 컬럼이 같을 때 tag가 a 인 것의 value 합과

tag 가 b인 것의 합이 다른 경우의 no를 찾는 쿼리를 짜야합니다.

(예를 들면 no가 1일때, a의 합은 500이고 b의 합도 500이니까 아니고,

no가 2일때 a의 합은 400이고 b의 합은 500이므로 no = 2 가 나오는 쿼리를 짜야합니다. )

group by를 사용해야할지

서브쿼리를 사용해야할지

join을 해야할지 도무지 감이 안옵니다 ㅠㅠ 

by 뉴비디비 [2021.04.20 22:49:56]

DB 종류 명시하면 좋을꺼 같아요.
아래는 오라클 기준인데,  다른 DB이면  "FROM DUAL" 부분만 빼면 확인될꺼예요. 

WITH dataTble (NO, TAG, VALUE) AS (
    SELECT 1, 'A', 250 FROM DUAL UNION ALL
    SELECT 1, 'A', 250 FROM DUAL UNION ALL
    SELECT 1, 'B', 500 FROM DUAL UNION ALL
    SELECT 2, 'A', 200 FROM DUAL UNION ALL
    SELECT 2, 'A', 200 FROM DUAL UNION ALL
    SELECT 2, 'B', 500 FROM DUAL 
) 
SELECT 
    DISTINCT NO 
FROM (
    SELECT 
        NO, TAG, SUM(VALUE) AS v_sum
        , SUM( SUM(VALUE) ) OVER(PARTITION BY NO ) AS no_sum
    FROM dataTble
    GROUP BY NO, TAG
) tmpTbl
WHERE no_sum <> v_sum *2

by 마농 [2021.04.21 07:56:40]
SELECT no
  FROM t
 GROUP BY no
HAVING SUM(DECODE(tag, 'A', val, -val)) != 0
;

 


by 동동동 [2021.04.21 08:50:55]

우와...감탄만 나옵니다....

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