DATE_FORMAT함수를 아는지 확인하는 문제.

 

SELECT ANIMAL_ID, NAME, DATE_FORMAT(DATETIME, "%Y-%m-%d") AS 날짜 FROM ANIMAL_INS ORDER BY ANIMAL_ID;

 

 

 

DATEDIFF함수 아는지 확인하는 문제.

첫번째 인자 - 두번째 인자를 반환.

 

SELECT O.ANIMAL_ID, O.NAME FROM ANIMAL_OUTS O, ANIMAL_INS I WHERE O.ANIMAL_ID = I.ANIMAL_ID ORDER BY DATEDIFF(O.DATETIME, I.DATETIME) DESC LIMIT 2;

if문 사용할 수 있는지 확인하는 문제. true면 두번째 인자가 리턴, false면 세번째 인자가 리턴.

SELECT ANIMAL_ID, NAME, IF(SEX_UPON_INTAKE LIKE 'Neutered%' OR SEX_UPON_INTAKE LIKE 'Spayed%', 'O', 'X') AS 중성화 FROM ANIMAL_INS ORDER BY ANIMAL_ID;


LIKE프레디킷은 서브 스트링 패턴을 비교하는 비교연산자로 사용된다.

'%'는 문자가 있거나 없을 수 있다는 의미.

'_'는 문자 하나를 나타낸다.

 

SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE NAME LIKE '%EL%' AND ANIMAL_TYPE='Dog' ORDER BY NAME;

 

LEFT 조인 사용

SELECT I.NAME, I.DATETIME FROM ANIMAL_INS I LEFT JOIN ANIMAL_OUTS O ON I.ANIMAL_ID=O.ANIMAL_ID WHERE O.ANIMAL_ID IS NULL ORDER BY I.DATETIME ASC LIMIT 3;

 

이중 질의 사용

SELECT NAME, DATETIME FROM ANIMAL_INS WHERE ANIMAL_ID NOT IN (SELECT ANIMAL_ID FROM ANIMAL_OUTS) ORDER BY DATETIME ASC LIMIT 3;

 

이중 쿼리로 푸는 방법

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;

 

 

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