무작정 SQL 공부하기

오늘처음해요·2024년 2월 20일
0

갑자기 토요일날 코테를 보게 됐는데

알고리즘 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가 나올 가능성이 가장 높으니 두 개 위주로 풀어야 될 것 같다

0개의 댓글