[프로그래머스] SUM, MAX, MIN 〉Lv2. 중복 제거하기 문제 설명 예시 풀이 방법 동물의 이름이 몇 개인지 조회하는 문제로 COUNT함수를 사용하여 NAME의 수를 집계합니다. 그러나 단순히 COUNT(NAME)으로 조회하게 되면 NAME이 같을 경우 각각 모두 세어질 것입니다. 이를 해결하기 위해 중복되는 이름은 하나로 합치라는 조건이 주어졌습니다. 중복을 제거하는 특징을 가진 DISTINCT를 사용하면 같은 이름이 하나로 세어질 것입니다. 또한 이름이 NULL인 경우는 집계하지 않는다고 하였으므로 WHERE 조건절에서 NULL이 아닌 경우를 작성하여 쿼리를 마무리 짓습니다. 문제 풀이 SELECT COUNT(DISTINCT NAME) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL 실행 결과 2021. 10. 13. [프로그래머스] SUM, MAX, MIN 〉Lv2. 동물 수 구하기 문제 설명 예시 풀이 방법 보호소에 동물이 몇 마리 들어왔는지 조회하는 문제로 쉽게 말해 ANIMAL_INS테이블의 행(row)의 개수를 구하는 쿼리입니다. 행의 개수는 COUNT 함수를 사용하여 하나의 속성(컬럼)을 지정하여 조회하면 됩니다. 단, 주의할 것은 해당 속성이 식별자이어야 합니다. 식별자(Identifiers) 식별자란,하나의 테이블(Entity) 내에서 각 행(Instance)을 유일하게 구분할 수 있는 속성(Column) 또는 속성 그룹을 말합니다. 또한 하나의 엔티티는 하나 이상의 식별자를 지녀야 합니다. 정리하자면, 식별자는 중복 데이터가 없는 속성(Column)을 의미합니다. 예. 사원 테이블의 속성이 사원번호, 사원명, 부서로 구성되어 있다고 가정해봅시다. 이때 식별자가 될 수 .. 2021. 10. 12. [프로그래머스] SUM, MAX, MIN 〉Lv2. 최솟값 구하기 문제 설명 예시 풀이 방법 ANIMAL_INS테이블에서 최초일자인 가장 오래된 날짜를 구하는 문제로 DATETIME의 가장 작은 값 즉, 최솟값을 구해야 합니다. 그러므로 MIN함수를 활용하여 DATETIME을 조회하면 됩니다. 문제 풀이 SELECT MIN(DATETIME) AS 최초일자 FROM ANIMAL_INS 실행 결과 2021. 10. 11. [프로그래머스] SUM, MAX, MIN 〉Lv1. 최댓값 구하기 문제 설명 예시 풀이 방법 테이블의 동물 보호 시작일(DATETIME)이 가장 최근인 데이터를 구하는 것이므로 MAX함수를 활용하여 DATETIME의 최댓값인 가장 최근 일자/시간을 구합니다. 예시의 마지막 테이블처럼 컬럼 이름은 일치하지 않아도 된다고 하여 저는 '최신일자'라는 컬럼 이름을 설정하였습니다. 결과는 정답이 나오는 걸 보니 날짜 데이터만 맞는다면 정답으로 인정하나 봅니다. 문제 풀이 SELECT MAX(DATETIME) AS 최신일자 FROM ANIMAL_INS 실행 결과 2021. 10. 10. [프로그래머스] SELECT 〉Lv1. 상위 n개 레코드 문제 설명 예시 풀이 방법 일반적으로 SQL을 작성할 때 컬럼명 즉, 열에 대한 정보를 작성하는 데 이번 문제는 열(Column)이 아닌 행(Row)에 대한 조건으로 결과를 출력해야 합니다. 보호 시작일(DATETIME)을 순서대로 정렬하여 가장 먼저 보호소에 들어온 동물이 최상단 행에 위치하도록 합니다. 그리고 LIMIT 구를 사용하여 최상단의 하나의 행만 추출합니다. 이번 시간에는 행의 수만큼 출력하는 구문인 LIMIT에 대해 배워서 제대로 익히고 넘어가보겠습니다. LIMIT LIMIT는 행에 제한을 거는 구로 MySQL과 PostgreSQL에서만 사용 가능합니다. 이와 같이 Oracle에서는 ROWNUM을, SQL Server에서는 TOP을 사용하여 LIMIT와 비슷하게 데이터베이스의 행에 제한을 .. 2021. 10. 9. [프로그래머스] SELECT 〉Lv1. 여러 기준으로 정렬하기 문제 설명 예시 풀이 방법 이 문제의 핵심은 제목에 나와 있습니다. 여러 기준으로 '정렬'. 결국 ORDER BY가 중요한 문제인 듯싶습니다. 우선 예시 테이블의 칼럼과 같은 결과를 내기 위해 SELECT ANIMAL_ID, NAME, DATETIME 을 씁니다. 다음은 동물 보호소의 동물 정보 테이블 ANIMAL_INS에서 데이터를 가져오기 위해 FROM ANIMAL_INS 를 작성합니다. 이제 가장 중요한 정렬 부분으로 우선 이름 순으로 정렬을 하고 그중 같은 이름만 다른 정렬을 해야 하므로 NAME을 앞에 적는다. ORDER BY NAME ASC, DATETIME DESC 로 마무리를 합니다. 원래대로라면 ASC를 생략하나, 뒤에 나올 DATETIME의 내림차순과 같이 쓰일 수가 있기 때문에 ASC.. 2021. 10. 8. [프로그래머스] SELECT 〉Lv1. 동물의 아이디와 이름 문제 설명 풀이 방법 아이디와 이름을 조회하므로 SELECT ANIMAL_ID, NAME 을, 동물 보호소에 들어온 동물의 정보를 담은 ANIMAL_INS 테이블로부터 데이터를 가져오기 때문에 FROM ANIMAL_INS 를 작성합니다. 이를 ANIMAL_ID 순으로 즉, ID의 오름차순이므로 ASC를 생략하여 ORDER BY ANIMAL_ID 로 마무리합니다. 문제 풀이 #solution.sql SELECT ANIMAL_ID, NAME FROM ANIMAL_INS ORDER BY ANIMAL_ID 실행 결과 2021. 10. 7. [프로그래머스] SELECT 〉Lv1. 어린 동물 찾기 문제 설명 예시 풀이 방법 아이디와 이름을 조회하니까 SELECT ANIMAL_ID, NAME 을, 동물 보호소에 들어온 동물의 정보를 담은 테이블 ANIMAL_INS로부터 데이터 추출하므로 FROM ANIMAL_INS 를 작성합니다. 다음은 조건으로 젊은 동물이라 하였으니 WHERE 조건절을 사용하여 WHERE INTAKE_CONDITION != 'Aged' 를 뽑아냅니다. Aged는 나이가 든 동물을 말하므로 이를 제외한 동물이 조건에 해당하므로 '!=' 연산자를 사용합니다. 결과는 아이디 순(오름차순)으로 정렬하므로 ORDER BY ANIMAL_ID 를 작성합니다. 문제 풀이 #solution.sql SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CON.. 2021. 10. 6. 이전 1 2 3 4 다음