TIL - 250523(SQL_leetcode_3개)

오정수·2025년 5월 23일

TIL

목록 보기
72/78
post-thumbnail

문제1(링크)

SELECT
    name, bonus
FROM Employee a
LEFT JOIN Bonus b
ON a.empId = b.empId
WHERE bonus < 1000
OR bonus IS NULL

문제2(링크)

SELECT
    name
FROM Customer
WHERE referee_id != 2
OR referee_id IS NULL

문제3(링크)

WITH a AS (
    SELECT
        *
        , COUNT(tiv_2015) OVER (PARTITION BY tiv_2015) cnt_15
        , CONCAT(lat,lon) xy
    FROM Insurance
), b AS (
    SELECT
        *
        , COUNT(xy) OVER (PARTITION BY xy) cnt_xy
    FROM a
)
SELECT
    ROUND(SUM(tiv_2016),2) tiv_2016
FROM b
WHERE cnt_15 > 1
AND cnt_xy = 1


비고 : 나름 코드가 길어서 쿼리 처리 속도가 느릴 줄 알았는데 빨라서 기분이 좋았다.
처음엔 좌표를 각각 중복을 체크했다. 그러면 오류가 있더라. 그래서 좌표를 합쳤다. 데이터 예시만 보고 좌표가 소수점이 아닌 점을 바탕으로 CONCAT()을 하고 위에 CAST(00 AS DECIMAL)을 했는데 소수점이 있다는 것을 파악하고 CAST는 사용하지 않았다.

profile
안녕하세요 오정수입니다

0개의 댓글