프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr-- 부서별로 부서 ID, 영문 부서명, 평균 연봉을 조회하는 SQL문-- 평균연봉은 소수점 첫째 자리에서 반올림하고 컬럼명은 AVG_SAL-- 결과는 부서별 평균 연봉을 기준으로 내림차순 정렬SELECT D.DEPT_ID, DEPT_NAME_EN, ROUND(AVG(SAL), 0) AS AVG_SALFROM HR_DEPARTMENT D JOIN HR_EMPLOYEES E ON D.DEPT_ID = E.DEPT_IDGROUP BY D.DEPT_IDORDER BY AVG_SAL DESC왜 이렇게 풀었을까?GROUP BY를 사용할 때에만 SELECT 구문에 MA..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr-- 음식 종류별로 즐겨찾기 수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문-- 결과는 음식 종류를 기준으로 내림차순 정렬SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITESFROM REST_INFOWHERE (FOOD_TYPE, FAVORITES)IN ( SELECT FOOD_TYPE, MAX(FAVORITES) FROM REST_INFO GROUP BY FOOD_TYPE)ORDER BY FOOD_TYPE DESC왜 이렇게 풀었을까?GROUP BY를 사용할 때에만 SELE..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr-- 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하는 SQL문-- 결과는 보호 시작일이 빠른 순으로 조회SELECT INS.ANIMAL_ID, INS.NAMEFROM ANIMAL_INS INS JOIN ANIMAL_OUTS OUTS ON INS.ANIMAL_ID = OUTS.ANIMAL_IDWHERE OUTS.DATETIME 왜 이렇게 풀었을까?JOIN을 활용한 간단한 문제였습니다. 먼저, 보호 시작일과 입양일이 서로 다른 테이블에 존재하기 때문에 두 테이블을 ANIMAL_ID 기준으로 JOIN(INNER JOIN)했습니다.이후 WHERE ..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT CATEGORY, SUM(SALES) TOTAL_SALESFROM BOOK B JOIN BOOK_SALES BS ON B.BOOK_ID = BS.BOOK_IDWHERE BS.SALES_DATE BETWEEN '2022-01-01' AND '2022-01-31'GROUP BY CATEGORYORDER BY CATEGORY왜 이렇게 풀었을까? 2022년 1월의 카테고리별 도서 판매량을 계산하기 위해 두 테이블을 BOOK_ID를 기준으로 JOIN(INNER JOIN)했습니다.이후 WHERE 절을 이용해 2022년 1월에 해당하는 데이터만 필터링하였고,..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT ORDER_ID, PRODUCT_ID, DATE_FORMAT(OUT_DATE, '%Y-%m-%d') AS OUT_DATE, CASE WHEN OUT_DATE IS NULL THEN '출고미정' WHEN OUT_DATE 왜 이렇게 풀었을까?CASE 구문을 통해서 OUT_DATE가 NULL인 데이터들은 출고미정으로, OUT_DATE가 22년 5월 1일 전일 경우에는 출고가 완료된 상태로, 이외에는 대기 상태로 지정해주었습니다.또 '%Y-%m-%d' 형식으로 날짜를 출력해주어야했기에 DATE_FORMAT 함수를 이용해서 ..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT INS.NAME, INS.DATETIMEFROM ANIMAL_INS INS LEFT JOIN ANIMAL_OUTS OUTSON INS.ANIMAL_ID = OUTS.ANIMAL_IDWHERE OUTS.ANIMAL_ID IS NULLORDER BY INS.DATETIME ASCLIMIT 3;왜 이렇게 풀었을까?Left Join을 사용하여 ANIMAL_INS에 있는 동물 중 ANIMAL_OUTS에 없는 데이터를 필터링해냈습니다.또 WHERE 조건에 있는 IS NULL 조건으로 입양되지 않은 동물을 식별할 수 있었습니다.또한 보호 시작일 순..
프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.krSELECT E1.ID, E1.GENOTYPE AS GENOTYPE, E2.GENOTYPE AS PARENT_GENOTYPEFROM ECOLI_DATA E1 JOIN ECOLI_DATA E2 ON E1.PARENT_ID = E2.IDWHERE (E1.GENOTYPE & E2.GENOTYPE) = E2.GENOTYPEORDER BY E1.ID ASC;왜 이렇게 풀었을까?Self Join으로 부모 ID와 자신의 ID가 같은 데이터들을 고른 뒤,비트 연산 중 AND 연산(E1.GENOTYPE & E2.GENOTYPE)의 결과를 부모의 형질과 비교..