728x90
반응형

문제:

풀이방법:

Where 조건 절에서 한 컬럼이 여러 개의 값을 가져도 되는지에 대한 여부를 파악하기 위해서는 IN을 사용한다. IN과 tuple 값을 사용하며 tuple에 값들을 나열한다.

1
2
SELECT ANIMAL_ID,NAME,SEX_UPON_INTAKE FROM ANIMAL_INS
WHERE NAME in ('Lucy''Ella''Pickle''Rogan''Sabrina''Mitty');
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

시간단위로 값을 출력하는 HOUR를 사용해서 시간대를 표현하도록 한다. HOUR를 사용하면 2019-10-2 09:35 -> 9

2019-10-3 09:59 -> 9 와 같이 변환시켜준다. 따라서 이를 기준으로 GROUPBY를 하고 갯수를 세준다. 또한 9시부터 19시까지라고 시간이 정해져 있으므로 이에 대한 조건을 HAVING으로 넣어주도록 한다.

1
2
SELECT HOUR(DATETIME) as 'HOUR',COUNT(*) as 'COUNT' FROM ANIMAL_OUTS
GROUP BY HOUR HAVING HOUR>=9 AND HOUR<=19 ORDER BY HOUR;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

 HAVING 절을 사용하는 예제이다. HAVING절은 WHERE절과 비슷하게 조건을 걸어줄 수 있다. 하지만 WHERE절에 조건을 걸 때에는 제약이 없지만 HAVING절은 GROUPBY에 사용한 컬럼에 대해서만 조건을 걸어 줄 수 있다. 따라서 NAME에 대해서 GROUPBY를 걸어주고 count가 1보다 크다는 조건을 걸어서 두 번 이상 쓰인 이름을 파악한다.

1
SELECT name,count(name) as 'COUNT' from animal_ins GROUPBY name HAVING count(name) >1 ORDER BY NAME;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

NULL이라는 값을 다른 값으로 전부 바꿔야 하는 문제이다. NULL이라는 값을 다른 값으로 바꿔주는 함수가 NVL인줄 알고 문제를 풀었다. 그런데 오류가 발생해서 알아보니 NVL은 Oracle에서 지원하고, MySQL에서는 isnull이라는 함수라고 한다. 

 따라서 isnull(column, 채울값)과 같이 사용하면 column에 있는 null 값을 채울 값으로 전부 바꿔준다.

1
SELECT ANIMAL_TYPE,ifnull(NAME,"No name") AS 'NAME',SEX_UPON_INTAKE FROM ANIMAL_INS;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

특정한 분류를 기준으로 값들을 묶어야 할 때 GROUPBY를 사용한다. GROUPBY절을 사용하면 이 절에 사용한 컬럼만을 SELECT절에 사용을 해야하며 COUNT와 같은 내장함수는 이 컬럼을 기준으로 작동한다. 따라서 GROUPBY ANIMAL_TYPE을 사용했으므로 SELECT에 ANIMAL_TYPE만을 사용해야 하며 COUNT도 CAT과 DOG의 수를 세어준다.

1
SELECT ANIMAL_TYPE,COUNT(ANIMAL_TYPE) FROM ANIMAL_INS GROUPBY ANIMAL_TYPE;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

중복을 제거해주는 명령어인 DISTINCT를 사용해야 하는 문제이다. 우선 NULL인 경우는 집계하기지 않으므로 WHERE 조건절을 통해서 NULL이 아닌 값을 걸러내고 DISTINCT NAME을 통해서 중복되는 값을 지우고 이를 COUNT 하는 방법으로 진행했다.

1
SELECT COUNT(DISTINCT NAME) AS 'COUNT' FROM ANIMAL_INS WHERE NAME is not NULL;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

SQL에는 갯수를 세주는 함수가 존재한다. COUNT라는 함수이며 COUNT(*)와 같이 사용하면 전체 갯수를 count한 값을 반환해준다.

1
SELECT COUNT(*) AS 'COUNT'  FROM ANIMAL_INS;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

SQL에서 상위 N개의 항목을 출력하기 위한 명령어는 LIMIT이다. LIMIT N 과 같이 사용을 하며 상위 N개 항목만을 출력하도록 해준다. 따라서 이 문제에서는 가장 먼저 들어온, 즉 한 동물만 출력하면 되므로 LIMIT 1을 사용했다.

1
SELECT NAME FROM ANIMAL_INS ORDER BY DATETIME LIMIT 1;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

 예시를 보면 이름이 없다는 것은 NAME의 값이 NULL임을 뜻하는 것이다. 따라서 NULL인 값을 찾기 위해서 WHERE 조건절을 사용해야 한다. NULL 다른 조건과는 달리 = 를 사용하지 않고 is를 사용한다. 따라서 WHERE NAME IS NULL을 사용해야 이름이 NULL인 값을 찾을 수 있다.

1
SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME is NULL ORDER BY ANIMAL_ID;
cs

문제링크:

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

728x90
반응형
728x90
반응형

문제:

풀이방법:

여러 기준으로 정렬을 하는 것은 ORDER BY 절에 컬럼들을 나열함으로써 해결할 수 있다. ORDER BY에 디폴트 값으론 오름차순으로 정렬로 설정이 되어 있지만 DESC라는 조건을 넣어주면 이를 내림차순으로 정렬할 수 있다.

1
SELECT ANIMAL_ID,NAME,DATETIME FROM ANIMAL_INS ORDER BY NAME,DATETIME DESC;
cs

문제링크:

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

728x90
반응형

+ Recent posts