목록전체 글 (601)
sm 기술 블로그
number = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"] def solution(s): answer = 0 for i in range(0, len(number)) : s = s.replace(number[i], str(i)) answer = int(s) return answer 문제요약 one4seveneight이 들어온다면 1478로 바꿔라. 설명 간단하다. 문자열 replace를 안다면 쉽게 풀 수 있는 문제이다.

문제 : 동물 보호소에 들어온 동물 이름 중 두 번 이상 쓰인 이름과 해당 이름이 쓰인 횟수를 조회하는 SQL문을 작성해주세요. 이때 결과는 이름이 없는 동물은 집계에서 제외하며, 결과는 이름 순으로 조회해주세요. SELECT * FROM (SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS GROUP BY NAME) A WHERE A.COUNT > 1 ORDER BY NAME; 1. 서브쿼리에서 GROUP BY 를 통해 이름과 이름이 쓰인 횟수를 뽑는다. 2. COUNT가 1보다 큰 녀석만 뽑아서 이름 기준으로 정렬한다.
문제 : 동물 보호소에 들어온 동물 중 고양이와 개가 각각 몇 마리인지 조회하는 SQL문을 작성해주세요. 이때 고양이를 개보다 먼저 조회해주세요. SELECT ANIMAL_TYPE, COUNT(ANIMAL_TYPE) AS count FROM ANIMAL_INS GROUP BY ANIMAL_TYPE ORDER BY ANIMAL_TYPE ASC; UNION으로 푸는 방법도 있지만 이 방법이 더 간단하다. 두개로 묶어서 개수를 센다는 것이다. (GROUP BY) 기준을 정하지 않고(ORDER BY를 하지 않고) 추출하면 개와 고양이의 순서가 바뀔 수 있다. 문제에서는 반드시 고양이가 개보다 먼저 조회 되어야 한다 했으므로 ORDER BY ANIMAL_TYPE ASC 를 붙여주어야 한다.
문제 : 동물 보호소에 들어온 동물의 이름은 몇 개인지 조회하는 SQL 문을 작성해주세요. 이때 이름이 NULL인 경우는 집계하지 않으며 중복되는 이름은 하나로 칩니다. SELECT COUNT(NAME) FROM (SELECT * FROM ANIMAL_INS GROUP BY NAME) A 위와 같이 서브쿼리를 이용하여 먼저 group by로 이름을 제거한 테이블에서 이름을 세는 방법이 있다. 또다른 방법으로는 SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS 다음과 같이 처음부터 name을 기준으로 중복을 제거하고 갯수를 세는 방법이 있다.