SELECT JOB_ID, SALARY
FROM HR.EMPLOYEES
WHERE SALARY BETWEEN2000AND3000UNIONSELECT JOB_ID,PHONE_NUMBER
FROM HR.EMPLOYEES
WHERE SALARY BETWEEN5000AND6000;
라고 입력한 경우엔
expression must have same datatype as corresponding expression
라고 오류가 뜬다. SALARY는 NUMBER이며 PHONE_NUMBER는 VARCHAR2 타입이기 때문
SELECT JOB_ID, SALARY
FROM HR.EMPLOYEES
WHERE SALARY BETWEEN2000AND3000UNIONSELECT JOB_ID,MANAGER_ID
FROM HR.EMPLOYEES
WHERE SALARY BETWEEN5000AND6000;
라고 하면 같은 타입이기때문에 결과는 출력되지만 행으로 결합이 되어
원하는 자료가 출력되지않는다.
상품테이블에서 분류코드 'P201'에 속한 판매가격이 30000~50000사이의 상품과 분류코드 'P101'에 속한 판매가격이 300000 이상인 상품들을 조회하시오 Alias는 상품코드, 상품명, 분류코드, 판매가격이며 판매가격이 큰 상품부터 출력하시오
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 판매가격
FROM PROD
WHEREUPPER(PROD_LGU)='P201'AND PROD_PRICE BETWEEN30000AND50000UNIONSELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 판매가격
FROM PROD
WHEREUPPER(PROD_LGU)='P101'AND PROD_PRICE>=300000ORDERBY4DESC; -- ORDER BY절에는 마지막 쿼리에서만 사용가능
상품테이블에서 분류코드 'P201'에 속한 판매가격이 30000~50000사이의 상품과 판매가격이 30000 이상인 상품들을 조회하시오 Alias는 상품코드, 상품명, 분류코드, 판매가격이며 판매가격이 큰 상품부터 출력하시오
SELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 판매가격
FROM PROD
WHEREUPPER(PROD_LGU)='P201'AND PROD_PRICE BETWEEN30000AND50000UNIONSELECT PROD_ID AS 상품코드,
PROD_NAME AS 상품명,
PROD_LGU AS 분류코드,
PROD_PRICE AS 판매가격
FROM PROD
WHERE PROD_PRICE>=30000ORDERBY4DESC;
SELECT A.BUY_PROD AS 상품코드,
B.PROD_NAME AS 상품명,
B.PROD_COST AS 매입가
FROM BUYPROD A, PROD B
WHERE A.BUY_DATE BETWEEN TO_DATE('20200501') AND TO_DATE('20200531')
AND A.BUY_PROD=B.PROD_ID
INTERSECTSELECT A.CART_PROD,
B.PROD_NAME,
B.PROD_PRICE
FROM CART A, PROD B
WHERE SUBSTR(CART_NO,1,6)='202005'AND A.CART_PROD=B.PROD_ID
2020년 5월 6월 7월에 구매한 회원을 조회하시오
풀이 1) JOIN
SELECTDISTINCT D.MEM_ID, D.MEM_NAME
FROM (SELECT CART_MEMBER
FROM CART
WHERE SUBSTR(CART_NO,1,6)='202005') A,
(SELECT CART_MEMBER
FROM CART
WHERE SUBSTR(CART_NO,1,6)='202006') B,
(SELECT CART_MEMBER
FROM CART
WHERE SUBSTR(CART_NO,1,6)='202007') C, MEMBER D
WHERE D.MEM_ID=A.CART_MEMBER
AND D.MEM_ID=B.CART_MEMBER
AND D.MEM_ID=C.CART_MEMBER
풀이 2) INTERSECT
SELECT A.CART_MEMBER AS 회원번호,
B.MEM_NAME AS 이름
FROM CART A, MEMBER B
WHERE A.CART_MEMBER=B.MEM_ID
AND SUBSTR(CART_NO,1,6)='202005'INTERSECTSELECT A.CART_MEMBER AS 회원번호,
B.MEM_NAME AS 이름
FROM CART A, MEMBER B
WHERE A.CART_MEMBER=B.MEM_ID
AND SUBSTR(CART_NO,1,6)='202006'INTERSECTSELECT A.CART_MEMBER AS 회원번호,
B.MEM_NAME AS 이름
FROM CART A, MEMBER B
WHERE A.CART_MEMBER=B.MEM_ID
AND SUBSTR(CART_NO,1,6)='202007'
SELECTDISTINCT A.CART_PROD AS 상품번호,
B.PROD_NAME AS 이름
FROM CART A, PROD B
WHERE A.CART_PROD=B.PROD_ID
AND SUBSTR(CART_NO,1,6)='202006'AND A.CART_PROD NOTIN(SELECTDISTINCT CART_PROD
FROM CART
WHERE SUBSTR(CART_NO,1,6)='202007');
SELECT C.CID
FROM ( SELECT B.CART_PROD AS CID
FROM (SELECTDISTINCT CART_PROD
FROM CART
WHERE CART_NO LIKE'202006%'ORDERBY1) B
WHERE B.CART_PROD NOTIN (SELECTDISTINCT CART_PROD
FROM CART
WHERE CART_NO LIKE'202007%')) C
ORDERBY1;
풀이2 ) MINUS
SELECT A.CART_PROD AS 상품번호,
B.PROD_NAME AS 이름
FROM CART A, PROD B
WHERE A.CART_PROD=B.PROD_ID
AND SUBSTR(CART_NO,1,6)='202005'
MINUS
SELECT A.CART_PROD AS 상품번호,
B.PROD_NAME AS 이름
FROM CART A, PROD B
WHERE A.CART_PROD=B.PROD_ID
AND SUBSTR(CART_NO,1,6)='202006'