갑자기 토요일날 코테를 보게 됐는데
알고리즘 4문제, SQL 1문제가 나온다
알고리즘은 프로그래머스 기준 Lv3을 풀 수 있어야 한다고는 하는데
풀어본 문제가 4개 밖에 없다...
그러면 더더욱 SQL에서 1문제를 맞추는 게 중요해졌다
//mySQL 정답 예시
SELECT
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID,
USER_ID,
SALES_AMOUNT
FROM
ONLINE_SALE
WHERE
SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
UNION ALL
SELECT
DATE_FORMAT(SALES_DATE, '%Y-%m-%d') AS SALES_DATE,
PRODUCT_ID,
NULL AS USER_ID,
SALES_AMOUNT
FROM
OFFLINE_SALE
WHERE
SALES_DATE BETWEEN '2022-03-01' AND '2022-03-31'
ORDER BY
SALES_DATE ASC, PRODUCT_ID ASC, USER_ID ASC
mySQL 정답 예시인데
처음 보면 머리가 어질어질해진다
다 대문자로 되어 있어서 뭔가 압박감이 느껴지지만
하나씩 구분해서 보면 별 거 없다
SELECT // 가져올 것
FROM // 테이블 이름
WHERE // 조건문
GROUP BY // 그룹화
HAVING // 그룹화 된 것 조건
ORDER BY // 정렬
이런 식으로 되어있다
SELECT
DATETIME
FROM
ANIMAL_INS
WHERE
DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS)
이것을 해석해보면
SELECT
밑의 조건을 충족한 DATETIME만 호출해라
FROM
ANIMAL_INS 테이블에서
WHERE
DATETIME 요소 중 MIN(DATETIME) 값과 같은 것만 가져와라
(SELECT MIN(DATETIME) FROM ANIMAL_INS)
ANIMAL_INS에서 가장 작은 DATETIME 반환
이런 식이다
코딩으로 따지면 단순한 조건문인 정도?
물론 내장 함수 같은 것도 새로 배워야 하다보니
공부할 게 적은 것은 아니지만
난 코테용으로만 공부하면 되니 필수적인 몇 개만 공부하면 된다
JOIN
, 정규표현식
, GROUP BY
등등
프로그래머스 SQL 고득점 KIT만 풀어보면 된다고 해서
어제 조금 풀었고 오늘 남은 문제 다 풀려고 한다
문제는 알고리즘인데
dfs, bfs만 깔짝 풀어봤고 DP는 풀지도 않았다
일단 DFS/BFS가 나올 가능성이 가장 높으니 두 개 위주로 풀어야 될 것 같다