본문 바로가기

프로그래머스/SQL

(88)
[프로그래머스/Lv.1] 경기도에 위치한 식품창고 목록 출력하기 - MySQL 📌 문제 📌 제출한 오답 SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, FREEZER_YN FROM FOOD_WAREHOUSE WHERE FREEZER_YN IS NULL = 'N' AND ADDRESS LIKE '경기%' ORDER BY WAREHOUSE_ID; 📌 정답 SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, COALESCE(FREEZER_YN, 'N') AS FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '경기%' ORDER BY WAREHOUSE_ID; 📌 기억할 것 COALESCE를 이용해 NULL값을 다른 값으로 대체할 수 있다.
[프로그래머스/Lv.2] NULL 처리하기 - MySQL 📌 문제 📌 정답 전에 틀린 문제에서 COALESCE를 사용하는 것을 배워 바로 풀 수 있었다. 뒤에 AS NAME을 붙이지 않으면 열 이름이 COALESCE(NAME, 'No name')로 그대로 나오므로 주의하기! SELECT ANIMAL_TYPE, COALESCE(NAME, 'No name') AS NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID; 📌 기억할 것 COALESCE는 인자로 주어진 컬럼 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수이다. 이번 문제에서처럼 특정한 열의 NULL값을 원하는 값으로 치환할 때 유용하기도 하다. IFNULL을 활용하는 풀이도 있었다. COALESCE와 똑같이 IFNULL(NAME, 'No name')으..
[프로그래머스/Lv.1] 가격이 제일 비싼 식품의 정보 출력하기 - MySQL 📌 문제 📌 제출한 오답 처음에 다음과 같이 제출했는데 틀렸다. 상품과 제대로 매치되지 않고 최대값인 가격만 따로 출력되어 틀린 것이다. SELECT PRODUCT_ID, PRODUCT_NAME, PRODUCT_CD, CATEGORY, MAX(PRICE) AS PRICE FROM FOOD_PRODUCT; 📌 정답 서브쿼리를 이용해 가격이 가장 비쌀 때 다른 정보들을 조회하도록 했다. 또한 테이블의 전체 열이 다 출력되기 때문에 일일히 적지 않고 *을 이용해 출력했다. SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT); 다른 풀이도 봤는데, 아래 코드는 가격을 기준으로 내림차순으로 정렬한 후 제일 상단에 있는 데이터..
[프로그래머스/Lv.2] 이름에 el이 들어가는 동물 찾기 - MySQL 📌 문제 📌 제출한 오답 el% 라고 작성하면 el이 포함된 이름이 아닌 el로 시작하는 이름이 나온다. 또한 ANIMAL_TYPE이 'Dog'인 데이터를 조회해야하는데 모든 동물 타입을 조회했다. 문제를 꼼꼼히 읽자. SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE 'el%' ORDER BY NAME; 📌 정답 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE '%el%' AND ANIMAL_TYPE = 'Dog' ORDER BY NAME;
[프로그래머스/Lv.1] 흉부외과 또는 일반외과 의사 목록 출력하기 - MySQL 📌 문제 📌 제출한 오답 날짜 포맷을 예시와 동일하게 조회하지 않았고, 고용일자를 내림차순으로 조회하지 않았다. 날짜 포맷 사용하는 법을 잘 몰라 검색해서 해결했다. SELECT DR_NAME, DR_ID, MCDP_CD, HIRE_YMD FROM DOCTOR WHERE MCDP_CD = 'CS' OR MCDP_CD = 'GS' ORDER BY HIRE_YMD, DR_NAME; 📌 정답 처음에 제출한 오답과 같이 OR로 적어도 되지만, 다른 사람들의 풀이를 보니 IN으로 묶어 처리하는 것이 더 깔끔해보였다. SELECT DR_NAME, DR_ID, MCDP_CD, DATE_FORMAT(HIRE_YMD, '%Y-%m-%d') AS HIRE_YMD FROM DOCTOR WHERE MCDP_CD IN ('CS..
[프로그래머스/Lv.1] 가장 비싼 상품 구하기 - MySQL 📌 문제 📌 정답 SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT; 📌 기억할 것 집계함수 정리 AVG MIN MAX SUM COUNT
[프로그래머스/Lv.1] 나이 정보가 없는 회원 수 구하기 - MySQL 📌 문제 📌 정답 SELECT COUNT(USER_ID) AS USERS FROM USER_INFO WHERE AGE IS NULL;
[프로그래머스/Lv.2] 동명 동물 수 찾기 - MySQL 📌 문제 📌 정답 SELECT NAME,COUNT(*) FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT(*) >= 2 ORDER BY NAME; 📌 기억할 것 HAVING 절은 GROUP BY절 뒤에 온다. HAVING절은 그룹함수를 포함해야 한다.(문제에서는 COUNT가 그룹함수이다.)