말랑한 하루

자주 쓰는 SQL 함수 본문

문제풀이/정보

자주 쓰는 SQL 함수

지수는말랑이 2022. 7. 22. 22:28
반응형

[ 값 ]

1. SUM()

2. AVG()

3. MIN()

4. MAX() : 최대 값 구하기

//programmers_level_1_최대값_구하기
SELECT MAX(DATETIME) AS "시간" FROM ANIMAL_INS;

5. COUNT()

6. DISTINCT : 중복 제거하기

//programmers_level_2_중복_제거하기
SELECT COUNT(DISTINCT NAME) FROM ANIMAL_INS;

[ 문자열 ]

1. LIKE : 부분 문자열 일치 검색

//programmers_level_2_이름에_el이_들어가는_동물_찾기
WHERE NAME LIKE "%el"	// el로 시작하는 문자열
WHERE NAME LIKE "el%"	// el로 끝나는 문자열
WHERE NAME LIKE "%el%"	// el을 포함하는 문자열

[ 시간 ]

1. () : DATETIME 으로부터 일부 데이터 추출 함수

YEAR(), MONTH(), DAY(), HOUR(), MINUTE(), SECOND()

2. DATE_FORMAT() : DATE 형변환

// %Y:4자리 연도 / %y:2자리 연도 / %M:영어월 / %m:숫자월 / %D:영어일 / %d:숫자일
// %H:24시간 / %h:12시간 / %i / %s
SELECT ANIMAL_ID, NAME, 
	DATE_FORMAT(DATETIME, "%Y-%m-%d") AS "날짜" 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

3. TIMESTAMPDIFF(DAY, A, B) : 두 날짜의 차이 구하기

//programmers_level_3_오랜_기간_보호한_동물(2)

[ 조건 ]

1. GROUP BY HAVING : 그룹별 집계된 결과 중 원하는 조건의 결과만 필터링 하는 경우 사용

// programmers_level_2_동명_동물_수_찾기
SELECT NAME, COUNT(NAME) 
FROM ANIMAL_INS 
WHERE NAME != "" 
GROUP BY NAME 
HAVING COUNT(NAME) > 1;

2. IF(condition, true-value, false-value) : 조건에 따라 true, false 값으로 바꾸기

//programmers_level_2_중성화_여부_파악하기
SELECT ANIMAL_ID, NAME, 
	IF(SEX_UPON_INTAKE LIKE "%Neutered%" 
	|| SEX_UPON_INTAKE LIKE "%Spayed%", "O", "X") AS "중성화" 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

3. IFNULL(column, value) : NULL인 경우 value로 값 바꾸기

//programmers_level_2_NULL_처리하기
SELECT ANIMAL_TYPE, IFNULL(NAME, "No name"), SEX_UPON_INTAKE 
FROM ANIMAL_INS
ORDER BY ANIMAL_ID;

[ 테이블 ]

1. A JOIN B ON condition : 조건에 맞는 B테이블의 값을 A테이블 값에 합친다.

//programmers_level_3_있었는데요_없었습니다
SELECT AOUT.ANIMAL_ID, AOUT.NAME
FROM ANIMAL_OUTS AOUT
    JOIN ANIMAL_INS AIN
    ON AOUT.ANIMAL_ID = AIN.ANIMAL_ID
WHERE AOUT.DATETIME < AIN.DATETIME
ORDER BY AIN.DATETIM

2. JOIN with GROUP BY HAVING

SELECT A.ID, A.NAME, A.HOST_ID
FROM PLACES A
    JOIN (SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) > 1) B
    ON A.HOST_ID = B.HOST_ID
ORDER BY A.ID;

3. JOIN USING

SELECT AIN.ANIMAL_ID, AIN.NAME
FROM ANIMAL_INS AIN JOIN ANIMAL_OUTS AOUT USING (ANIMAL_ID)
ORDER BY TIMESTAMPDIFF(DAY, AIN.DATETIME, AOUT.DATETIME) DESC
LIMIT 2;
반응형
Comments