목록프로그래머스/SQL (88)
Welcome! Everything is fine.
📌 문제 📌 정답 SELECT FACTORY_ID, FACTORY_NAME, ADDRESS FROM FOOD_FACTORY WHERE ADDRESS LIKE '강원도%' ORDER BY FACTORY_ID; 📌 기억할 것 LIKE 연산자로 문자열 부분일치를 검색할 수 있다.
📌 문제 📌 정답 SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME, DATETIME DESC; 📌 기억할 것 ORDER BY문은 첫번째 조건으로 정렬하되, 첫번째 조건이 동일할 경우 그 다음 조건에 따라 정렬한다.
📌 문제 📌 정답 SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1; 📌 기억할 것 LIMIT으로 상위 n개 데이터를 조회할 수 있다는 것을 처음 알았다. LIMIT으로 다음과 같이 범위를 정하여 4번째(인덱스 0부터 시작)부터 6개의 레코드를 추출할 수도 있다. SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 3, 6;
📌 문제 📌 정답 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != "Aged" ORDER BY ANIMAL_ID; 📌 기억할 것 위 코드에서 INTAKE_CONDITION "Aged" 라고 적어도 무방하다.
📌 문제 📌 정답 내가 제출한 답안은 아래와 같았지만, SELECT COUNT(DISTINCT NAME) AS count FROM ANIMAL_INS WHERE NAME IS NOT NULL; 전체 행이 아닌 특정 컬럼의 레코드를 셀 때는 null을 포함하지 않는다고 한다. 따라서 WHERE절은 지워도 된다. SELECT COUNT(DISTINCT NAME) AS count FROM ANIMAL_INS; 📌 기억할 것 전체 행이 아닌 특정 컬럼의 레코드를 셀 때는 null을 포함하지 않는다. COUNT, DISTINCT, IS NOT NULL MySQL과 Oracle 문법이 섞여서 생각났기 때문에 잘 구분해서 기억해둬야겠다.
📌 문제 📌 정답 ANIMAL_ID 역순으로 조회해야하므로 ORDER BY 뒤에 내림차순으로 정렬하는 DESC를 명시해준다. SELECT NAME, DATETIME FROM ANIMAL_INS ORDER BY ANIMAL_ID DESC; 📌 기억할 것 GROUP BY를 사용하면 기본적으로 오름차순(ASC)으로 정렬된다. 내림차순으로 정렬하고자 할 때는 답안처럼 DESC를 뒤에 명시해주면 된다. SELECT * FROM 테이블명 ORDER BY 컬럼명 DESC;
📌 문제 📌 정답 SELECT MIN(DATETIME) AS 시간 FROM ANIMAL_INS; 📌 기억할 것 MIN, MAX 함수는 최솟값과 최댓값을 구하는 집계함수이며, GROUP BY절과 함께 자주 사용된다. SELECT MAX(컬럼명) FROM 테이블명; SELECT MIN(컬럼명) FROM 테이블명
3월부터 프로그래머스에서 SQL 문제도 조금씩 풀어보기로 했다. 문제와 내가 푼 답, 풀면서 복습한 내용, 알게된 내용 등을 포스팅 할 예정이다. 사실 SQLD 따고 나서 한 번도 공부하지 않아서 다시 백지가 되었지만.. 기본 문법만이라도 익숙해지는 것이 좋겠지! 📌 문제 📌 정답 SELECT COUNT(ANIMAL_ID) AS count FROM ANIMAL_INS; 📌 기억할 것 SQL 기본 문법은 아래와 같다. SELECT 열_이름 FROM 테이블_이름 WHERE 조건식 GROUP BY 열_이름 HAVING 조건식 ORDER BY 열_이름 위 문제에서 사용된 COUNT는 대표적인 집계함수로, COUNT(ANIMAL_ID)로 ANIMAL_ID의 행 개수를 구했다. SELECT COUNT(*) FROM..