목록전체 글 (163)
꿈꾸는 개발자의 블로그
문제 USER_INFO 테이블과 ONLINE_SALE 테이블에서 1) 2021년에 가입한 전체 회원들 중 3) 상품을 구매한 회원수와 5) 상품을 구매한 회원의 비율(=2021년에 가입한 회원 중 상품을 구매한 회원수 / 4) 2021년에 가입한 전체 회원 수)을 2) 년, 월 별로 출력하는 SQL문을 작성해주세요. 상품을 구매한 회원의 비율은 소수점 두번째자리에서 반올림하고, 전체 결과는 년을 기준으로 오름차순 정렬해주시고 년이 같다면 월을 기준으로 오름차순 정렬해주세요. 문제 풀이 인라인 뷰 2개를 이용한 풀이 두 테이블을 JOIN 후, 가입한 날짜를 확인하기 위하여 WHERE 조건을 건다. (T1) 년, 월 별로 조회하기 위하여 GROUP BY로 묶는다. (T1) 상품을 구매한 회원수를 구하기 위하..
문제 PRODUCT 테이블과 OFFLINE_SALE 테이블에서 1) 상품코드 별 2) 매출액(판매가 * 판매량) 합계를 출력하는 SQL문을 작성해주세요. 결과는 매출액을 기준으로 내림차순 정렬해주시고 매출액이 같다면 상품코드를 기준으로 오름차순 정렬해주세요. 문제 풀이 두 테이블을 JOIN 후, 상품코드 별로 조회하기 위하여 GROUP BY로 묶는다. 매출액을 sum 함수로 구한다. 전체 코드 SELECT a.PRODUCT_CODE, sum(SALES_AMOUNT * PRICE) AS SALES FROM PRODUCT a JOIN OFFLINE_SALE b ON a.PRODUCT_ID = b.PRODUCT_ID GROUP BY a.PRODUCT_CODE ORDER BY 2 DESC, 1
문제 보호소에서 중성화 수술을 거친 동물 정보를 알아보려 합니다. 1) 보호소에 들어올 당시에는 중성화1되지 않았지만, 보호소를 나갈 당시에는 중성화된 동물의 2) 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 SQL 문을 작성해주세요. 문제 풀이 두 테이블을 JOIN 후, ANIMAL_INS 테이블의 중성화 여부와 ANIMAL_OUTS 테이블의 중성화 여부를 각각 구하기 위하여 'Intact'가 포함되어 있는지와 없는지 WHERE 조건을 건다. 위의 결과에서 중복 없이 동물 ID와 종, 이름을 조회하기 위하여 GROUP BY로 묶는다. (DISTINCT로 조회도 가능) 전체 코드 SELECT a.ANIMAL_ID, a.ANIMAL_TYPE, a.NAME FROM ANIMAL_INS a JO..
문제 1) 아직 입양을 못 간 동물 중, 2) 가장 오래 보호소에 있었던 동물 3) 3마리의 이름과 보호 시작일을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일 순으로 조회해야 합니다. 문제 풀이 두 테이블을 LEFT OUTER JOIN 후, ANIMAL_OUTS 테이블에 입양일이 없는 데이터를 찾기 위하여 WHERE 조건을 건다. (LEFT OUTER JOIN : 왼쪽에 오는 ANMAIL_INS 테이블의 데이터는 모두 조회하고, 오른쪽에 오는 ANIMAL_OUTS 테이블에 입양일이 없는 경우에는 NULL로 JOIN 하기 위함) 가장 오래 보호소에 있었던 동물을 구하기 위하여 보호시작일 순으로 정렬한다. 동물 3마리만 조회하기 위하여 ROWNUM을 사용한다. 전체 코드 SELECT NAME,..
문제 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었습니다. 1) 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 시작일이 빠른 순으로 조회해야합니다. 문제 풀이 두 테이블을 JOIN 후, ANIMAL_INS 테이블의 입양일이 ANIMAL_OUTS 테이블의 보호 시작일보다 빠른 동물을 찾기 위하여 WHERE 조건을 건다. 전체 코드 SELECT a.ANIMAL_ID, a.NAME FROM ANIMAL_INS a JOIN ANIMAL_OUTS b ON a.ANIMAL_ID = b.ANIMAL_ID WHERE a.DATETIME > b.DATETIME ORDER BY a.DATETIME