이중 쿼리로 푸는 방법

SELECT ANIMAL_ID, NAME FROM ANIMAL_OUTS WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_INS);

 

LEFT 조인으로 푸는 방법

SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_OUTS O LEFT JOIN ANIMAL_INS I ON (O.ANIMAL_ID = I.ANIMAL_ID) WHERE I.ANIMAL_ID IS NULL;

 

RIGHT 조인으로 풀기

SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_INS I RIGHT JOIN ANIMAL_OUTS O ON (O.ANIMAL_ID = I.ANIMAL_ID) WHERE I.ANIMAL_ID IS NULL;

 

SELECT ANIMAL_TYPE, IFNULL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID;

 

IFNULL을 아는지 확인하는 문제 My sql에서 사용된다.

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NOT NULL;

 

IS NOT NULL을 쓸 줄 아는지 묻는 문제.

SELECT ANIMAL_ID FROM ANIMAL_INS WHERE NAME IS NULL;

 

IS NULL을 쓸 수 있는지 묻는 문제.

'SQL' 카테고리의 다른 글

[Programmers]NULL 처리하기  (0) 2019.10.14
[Programmers]이름이 있는 동물의 아이디  (0) 2019.10.14
[Programmers]입양 시각 구하기(2)  (0) 2019.10.14
[Programmers] 입양 시각 구하기(1)  (0) 2019.10.14
SQL DISTINCT와 GROUP BY  (0) 2019.10.14

변수를 써서 구현하는 방법.

SET @H = -1;
SELECT @H:=@H +1 AS HOUR, (SELECT COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @H) FROM ANIMAL_OUTS WHERE @H<23;

 

 

 

GROUP BY를 써서 푸는 문제.

시간별로 묶고 시간 순으로 정렬하고 9시부터 19시까지로 설정.

 

SELECT HOUR(DATETIME), COUNT(*) FROM ANIMAL_OUTS WHERE HOUR(DATETIME)>=9 AND HOUR(DATETIME)<=19 GROUP BY HOUR(DATETIME) ORDER BY HOUR(DATETIME);

데이터를 조회할 때 SELECT 사용.

 

DISTINCT 유니크한 데이터를 조회하는 경우 사용. 중복된 결과를 제거할 때 사용한다.

 

GROUP BY 데이터를 그룹화해서 조회하는 경우 사용.

 

SELECT DISTINCT col1 FROM table1;

SELECT col1 FROM table1 GROUP BY col1;

 

두 쿼리는 같은 결과를 주지만. GROUP BY는 그룹화하고 정력 작업을 같이한다.

정렬작업이 필요 없는 경우 DISTINCT를 사용하는 것이 성능적으로 좋다.

 

 

+ Recent posts