본문 바로가기
[프로그래머스] String, Date 〉Lv2. DATETIME에서 DATE로 형 변환 문제 설명 예시 - 시각(시-분-초)을 제외한 날짜(년-월-일)만 보여주세요. 풀이 방법 동물 보호소에 들어온 동물 중, 각 동물의 아이디와 이름, 들어온 날짜를 조회하는 문제로 결과는 아이디 순으로 조회해야 합니다. 이때 시각을 제외한 날짜만 보여줘야 하므로 SELECT절에서 DATETIME컬럼의 DATE_FORMAT을 '%Y-%m-%d'로 변환하고 alias를 '날짜'로 지정합니다. DATE_FORMAT은 (날짜컬럼명,'%Y or %y -%M or %m- %D or %d')를 사용하여 날짜를 변환합니다. 여기서 %Y는 년도를 4개의 숫자로 표현하여 2001, 2002, 2021,...와 같이 나타낼 수 있으며, %y는 뒤의 두 수로 2002년이면 02로, 2021이면 21로 표현됩니다. %M은 Mon.. 2021. 10. 29.
[프로그래머스] String, Date 〉Lv3. 오랜 기간 보호한 동물(2) 문제 설명 예시 풀이 방법 입양 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 문제로 결과는 보호 기간이 긴 순으로 조회 해야 합니다. 보호 시작일과 입양일의 차이를 구하여 가장 큰 값 순으로 나열하면 보호 기간이 가장 긴 동물 순으로 나열될 것입니다. 이를 위해 FROM절에서 두 테이블을 모두 적고 ALIAS를 사용하여 ANIMAL_INS는 I, ANIMAL_OUTS는 O으로 구분합니다. WHERE절에서는 각 테이블의 식별자인 아이디가 같을 때의 조건을 제시합니다. 다음으로 O의 입양일에서 I의 보호 시작일을 빼고, 이를 DESC로 내림차순으로 정렬합니다. 그러면 보호 기간이 긴 데이터는 상단에 위치하고 보호 기간이 짧은 데이터는 하단에 위치하게 됩니다. 그리고 가장 .. 2021. 10. 28.
[프로그래머스] String, Date 〉Lv2. 중성화 여부 파악하기 문제 설명 예시 풀이 방법 보호소 동물의 중성화 여부를 파악하려 합니다. 중성화된 동물은 SEX_UPON_INTAKE 컬럼에 'Neutered' 또는 'Spayed'라는 단어가 있습니다. 동물의 아이디와 이름, 중성화 여부를 아이디 순으로 조회하는 쿼리를 작성하는 문제입니다. 이때 중성화가 되어 있다면 'O', 아니라면 'X'로 표시 합니다. 이를 위해 SELECT절에 조회할 컬럼명을 우선 선정해 봅니다. 동물의 아이디, 이름, 중성화 여부. 동물의 아이디와 이름은 ANIMAL_ID와 NAME으로 표현하면 됩니다. 그러나 중성화 여부는 CASE문을 작성하여 중성화 여부를 판별하고, 그에 맞는 문자로 표시하는 것까지 해봅시다. 우선 CASE문의 사용법을 알아봅시다. CASE WHEN 조건 THEN 반환값 .. 2021. 10. 27.
[프로그래머스] String, Date 〉Lv2. 이름에 el이 들어가는 동물 찾기 문제 설명 예시 풀이 방법 보호소에 개 이름에 'el'이 들어간 개를 찾는 사람이 찾아왔습니다. 동물 보호소에 들어온 동물 이름 중, 이름에 "EL"이 들어가는 개의 아이디와 이름을 조회하는데 결과는 이름 순으로 조회하는 문제입니다. 단, 이름의 대소문자는 구분하지 않습니다. FROM절에 테이블 명인 ANIMAL_INS를 적고, WHERE절에 이름에 "EL"이 들어가는 개를 찾는 조건을 제시합니다. 이 때, 사용할 수 있는 것은 LIKE 연산자와 와일드카드인 '%'를 사용하여 이름에 "EL"이 들어가고, 생물 종이 'Dog'인 조건을 만듭니다. 마지막으로 이름 순으로 ORDER BY 하여 정렬합니다. 조회해야 하는 것은 동물의 아이디와 이름이므로, SELECT절에 ANIMAL_ID와 NAME을 적습니다... 2021. 10. 26.
[프로그래머스] String, Date 〉Lv2. 루시와 엘라 찾기 문제 설명 예시 풀이 방법 동물 보호소에 들어온 동물 중, 이름이 Lucy, Ella, Pickle, Rogan, Sabrina, Mitty인 동물의 ID와 이름, 성별 및 중성화 여부를 조회하는 문제로 결과는 아이디 순으로 조회해야 합니다. FROM절에 보호소에 들어온 동물의 정보를 담은 테이블 ANIMAL_INS을 넣고, WHERE절에서 문제의 핵심 요구사항인 동물의 이름 컬럼 안에(IN) 해당 이름의 동물이 있는지 조건으로 명시합니다. 마지막으로 동물의 아이디 순으로 ORDER BY합니다. 문제 풀이 SELECT ANIMAL_ID, NAME, SEX_UPON_INTAKE FROM ANIMAL_INS WHERE NAME IN ('Lucy', 'Ella', 'Pickle', 'Rogan', 'Sabri.. 2021. 10. 25.
[프로그래머스] JOIN 〉Lv4. 보호소에서 중성화한 동물 문제 설명 예시 풀이 방법 보호소에서 중성화 수술을 거친 동물 정보를 알아보기 위한 쿼리를 짭니다. 보호소에 들어올 당시에는 중성화되지 않았지만(성별 및 중성화 여부에 Intact인 동물), 보호소를 나갈 당시에는 중성화된(성별 및 중성화 여부에 Spayed 또는 Neutered로 표시되어 있는 동물) 동물의 아이디와 생물 종, 이름을 조회하는 아이디 순으로 조회하는 문제입니다. FROM절에서 보호소에 들어온 동물의 정보가 담긴 테이블 ANIMAL_INS와 입양간 동물의 정보가 담긴 테이블 ANIMAL_OUTS를 동물의 아이디로 매치하여 JOIN합니다. WHER절에서 중성화 여부에 대한 조건을 명시하는데, 글자를 포함하는지 알아보기 위해서는 LIKE 연산자 와 와일드카드('%,_')를 사용하여 해당 문자.. 2021. 10. 24.
[프로그래머스] JOIN 〉Lv3. 오랜 기간 보호한 동물(1) 문제 설명 예시 풀이 방법 아직 입양을 못 간 동물 중, 가장 오래 보호소에 있었던 동물 3마리의 이름과 보호 시작일을 조회하는 문제입니다. 결과는 보호 시작일 순으로 조회해야 합니다. 우선 주어진 두 테이블을 활용하여 동물의 ID가 같은 것끼리 매치하여 JOIN을 합니다. WHERE조건으로 아직 입양을 못 간 동물을 추출하도록 하여 입양 테이블(ANIMAL_OUTS)의 동물 아이디가 NULL인 조건을 명시합니다. 가장 오래 보호소에 있었던 동물 3마리를 추출하기 위해 보호소에 들어온 동물 정보를 담은 테이블 ANIMAL_INS의 보호 시작일(DATETIME) 순으로 ORDER BY하여 정렬합니다. 다음으로 행단위로 상위 n개 행을 추출하는 LIMIT n;을 사용하여 보호 시작일이 가장 빠른 상위 3개 .. 2021. 10. 23.
[프로그래머스] JOIN 〉Lv3. 있었는데요 없었습니다 문제 설명 예시 풀이 방법 관리자의 실수로 일부 동물의 입양일이 잘못 입력되었다고 합니다. 보호 시작일보다 입양일이 더 빠른 동물의 아이디와 이름을 조회하여 결과는 보호 시작일이 빠른 순으로 정렬하는 문제입니다. 이 문제도 이 전 문제와 마찬가지로 ANIMAL_INS와 ANIMAL_OUTS의 동물의 아이디가 같은 것 끼리 매치하여 JOIN 합니다. 그리고 WHERE절에서 INS의 보호 시작일(DATETIME)이 OUTS의 입양일(DATETIME)보다 더 클 때를 조건으로 하여 보호 시작일보다 입양일이 더 빠른 동물들을 추출합니다. 다음으로 보호 시작일인 INS의 DATETIME이 빠른 순으로 정렬되도록 ORDER BY에 입력해 줍니다. 이때 SELECT절에는 INS 테이블의 동물 아이디와 이름이거나 OU.. 2021. 10. 22.