시작하기 앞
전산직에 지원하다보니 코딩테스트에 SQL이 포함되는 경우도 있다.
그래서 이 참에 코테 연습겸 같이 병행 할까 한다.
CONCAT
https://school.programmers.co.kr/learn/courses/30/lessons/298515
CONCAT은 문자열을 이어주는 역할을 한다.
현재 문제에서 길이에 cm를 추가해줘야하므로 CONCAT을 활용한다.
SELECT CONCAT(max(LENGTH),'cm') as MAX_LENGTH FROM FISH_INFO
DATE_FORMAT
https://school.programmers.co.kr/learn/courses/30/lessons/298516
날짜 비교하는 문제는 자주 출제된다
DATE_FORMAT으로 형식을 바꾸어 비교를 쉽게 하도록하자
SELECT count(*) as FISH_COUNT FROM FISH_INFO WHERE DATE_FORMAT(TIME, "%Y") = 2021
IFNULL, LIMIT
https://school.programmers.co.kr/learn/courses/30/lessons/298517
IFNULL(A,B)를 활용하여 A가 NULL일시 B로 바꾸어 준다.
그리고 갯수를 10개로 제한해야하니 LIMIT를 걸어준다.
SELECT ID, LENGTH FROM FISH_INFO ORDER BY IFNULL(LENGTH,10) DESC, ID LIMIT 10
ROUND
https://school.programmers.co.kr/learn/courses/30/lessons/293259
ROUND를 활용하여 소수점을 반올림 하려한다.
ROUND(A,B) A에 값을 넣고 반올림하고 싶은 자리수를 B에 넣으면 반올림해준다.
SELECT ROUND(avg(IFNULL(LENGTH,10)),2) as AVERAGE_LENGTH FROM FISH_INFO
IS NULL
https://school.programmers.co.kr/learn/courses/30/lessons/293258
차피 10cm 이하면 null로 표기되고 있어 IS NULL을 활용하여 NULL인지 확인해주면 된다.
SELECT COUNT(*) AS FISH_COUNT FROM FISH_INFO WHERE LENGTH IS NULL;
IN
https://school.programmers.co.kr/learn/courses/30/lessons/276013
OR을 이용하여 푸는 방법도 있지만
보다 간편하게 IN을 이용할 수 있다.
WHERE ‘KEYWORD’ IN (COL1,COL2,COL3)을 이용하여 COLUMN에 있는 키워드가 있는지 찾아낼 수 있다.
SELECT ID, EMAIL, FIRST_NAME, LAST_NAME FROM DEVELOPER_INFOS WHERE SKILL_1 = 'Python' OR SKILL_2 = 'Python' OR SKILL_3 = 'Python' ORDER BY ID
SELECT ID,EMAIL,FIRST_NAME,LAST_NAME
FROM DEVELOPER_INFOS
WHERE 'Python' IN (SKILL_1,SKILL_2,SKILL3)
ORDER BY ID