티스토리 뷰

https://programmers.co.kr/learn/courses/30/lessons/59034

 

프로그래머스에 코딩연습하러 갔다가 MYSQL도 있는걸 보고 해보았다.

첫 번째 문제

아주 기초적인 문제부터 시작. 모든 레코드를 조화하는데 ID를 기준으로 조회해달라는 문제.

ORDER BY와 ASC, DESC를 이해하는지의 여부

 

두 번째 문제

이거는 SELECT문을 *말고 쓸수있느냐.. DESC를 아느냐의 문제였던 것 같다. 마찬가지로 기초 중의 기초. 혹시 문제를 잘못 누르지 않았나 테스트하는 것 같았다.

그러고보니 MYSQL을 배울 땐 명령문을 대문자로 쓰고 그외는 소문자로 써서 가독성을 늘렸었는데 여기선 모든게 대문자로 예시를 보여주다 보니 대문자로 쓰게되었다.

 

세 번째 문제

세 번째 문제부터는 배운대로 명령문은 대문자, 이외는 소문자로 써주었다. 이번 문제는 WHERE 조건문을 활용할 수 있느냐의 기초문제 intake_condition이 sick인 테이블의 animal_id와 name을 출력했다.

 

네 번째 문제

Aged가 아닌 동물들을 animal_id 기준으로 ASC 하라는 문제. 문제를 좀 애매?하게 낸 감이 없지않아 있다. 젊은 동물을 조회하라는데 늙어서 온 동물들은 Aged가 표시됐다는걸 알아서 판단해야하는 문제.

다섯 번째 문제

아니.. 문제가 좀 중복되는거 아닌가..

여섯 번째 문제

이번에는 ORDER BY에 여러 조건을 걸 수 있는가? 에 대한 문제

이름을 ABC순으로 출력해야 해서 오름차순인 ASC가 들어가고, 최근에 보호를 시작한 동물부터 출력되게 해야해서 내림차순인 DESC를 쓴 문제.

오름차순과 내림차순을 헷갈려하지 않는지, 두개 이상의 조건을 걸 수 있는지 판단하는 문제.

 

일곱 번째 문제

datetime에 ASC를 주고 LIMIT을 써서 가장 먼저 들어왔던 동물을 찾아주었다.

여덟번째 문제

MAX를 쓸줄 아느냐? 문제였다. 네 쓸줄 압니다.

 

아홉번째 문제

 

그럼 MIN도 쓸줄아니? 네 쓸줄압니다..

 

열 번째 문제

COUNT로 컬럼 갯수 구하기~

 

 

열한번째 문제

DISTINCT로 중복을 제거하고 NOT name IS NULL로 NULL값이 아닌 컬럼의 갯수를 구하는 문제.

열두번째 문제

GROUP BY 로 그루핑하고, HAVING절로 조건을 걸어서 해결한 문제. WHERE절로 조건을 걸면 안되는 이유를 추가로 찾아서 복습했다.

WHERE는 테이블에서 맨처음 row를 조회할 때 조건을 설정하기 위한 구문이고

HAVING은 이미 조회한 row들을 다시 그루핑했을때, 생성된 그룹들 중에서 다시 필터링 할 때 쓰는 구문이다.

이번 문제는 꽤 의미있었던 문제였던 것 같다. 다만 문제가 dog와 cat밖에 없어서 조건을 걸지 않아도 그냥 통과되어버리는 사태가 발생했다(...)

 

열두번째 문제

이름으로 그루핑해주고, 이름의 갯수가 2개 이상일때의 칼럼들을 오름차순 정렬하여 문제해결

 

열세번째 문제

이번 문제는 09시~ 19시를 시간대별로 그룹화하여 컬럼이 몇개씩 있는지 출력하는 문제였다.

SUBSTRING( x, y, z)는 로우 x의 y번째 문자열에서 길이 z만큼 가져오는 함수이다.

따라서 DATETIME에 있는 시간만 뽑아오고, 그루핑 이전에 WHERE문을 활용하여 9시~19시의 시간대별로 좁혔다.

그리고 시간대별로 그루핑한 다음 hour를 기준으로 오름차순(ASC)를 해주어서 해결.

 

열네번째 문제

 

띠용, 열세번째 문제랑 큰 차이가 없어보이지만 없는 변수를 직접 만들어서 0개라고 표시해줘야하는 문제다

SET을 이용해야 할 것 같은데.. 복습해서 다시 풀어봐야겠다. 일단 새벽4시이므로 내일하는걸로하고 취침