무슨 문제가 나오는 건지 예상이 안되는 챕터..? EASY가 많으니 훈련한다 생각하고 해보자!
[EASY] 1667. Fix Names in a Table
CONCAT / UPPER / LOWER / SUBSTR
⏰ 4:23
SELECT USER_ID, CONCAT(UPPER(SUBSTR(NAME,1,1)),LOWER(SUBSTR(NAME,2))) AS NAME
FROM USERS
ORDER BY 1
[EASY] 1527. Patients With a Condition
LIKE
⏰ 4:03
SELECT *
FROM PATIENTS
WHERE CONDITIONS LIKE 'DIAB1%' OR CONDITIONS LIKE '% DIAB1%'
[EASY] 196. Delete Duplicate Emails
DELETE
⏰ 8:00
DELETE 함수 처음 써봤다...! 테이블에 손대는 함수는 실전에서 쓰기 넘 무서울 것 같은데~!
DELETE FROM PERSON
WHERE ID NOT IN (
SELECT * FROM (
SELECT MIN(ID)
FROM PERSON
GROUP BY EMAIL) AS A
)
이번에도 챗GPT한테 DELETE의 활용법에 대해 자세히 물어봤는데, 당최 왜 서브쿼리를 2번 걸어야 하는건지 이해가 안돼서 집요하게 물었다. 결론은 구냥 DELETE의 법칙이 그렇다는 얘기... 일단 데이터를 뽑아서 새로운 테이블인척 하고 일을 시켜야 애가 충격을 안 받고 자기꺼 아니고 남의꺼인줄 알고 삭제해주나보다...(?)
[MEDIUM] 176. Second Highest Salary
LIMIT / DISTINCT
⏰ 21:48
으아아악. 큰 맥락에서 보면 위에서 본 것과 비슷한 사례고 지난 번에 MAX구문 활용할 때도 끝까지 궁금해했던 부분인데.
[배움 1] 빈 값을 NULL로 출력하려면 서브쿼리로 한 번 감싸준다.
한 번 SELECT로 출력했을 때 값이 없다면 NULL도 출력되지 않지만, 그 아무것도 없는 테이블에서 다시 값을 출력하려고 시도하면 그때는 NULL을 출력해주는 것. 구냥 그런걸로 기억해두고 외워야겠다...
[배움 2] 이런 경우 본쿼리에 FROM 안 써도 결과값이 나옴 (!!!)
[배움 3] LIMIT에 변수를 2개 쓰면 LIMIT OFFSET(어디부터 시작), COUNT(몇개까지 카운트)와 같이 쓸 수 있다.
SELECT
(SELECT DISTINCT SALARY
FROM EMPLOYEE
ORDER BY SALARY DESC
LIMIT 1,1)
AS SecondHighestSalary
[EASY] 1484. Group Sold Products By The Date
GROUP_CONCAT / DISTINCT
⏰ 6:59
GROUP_CONCAT 처음 써봤다! 잘 배워갑니다~
SELECT SELL_DATE, COUNT(DISTINCT PRODUCT) AS NUM_SOLD,
GROUP_CONCAT(DISTINCT PRODUCT ORDER BY PRODUCT) AS PRODUCTS
FROM ACTIVITIES
GROUP BY SELL_DATE
[EASY] 1327. List the Products Ordered in a Period
GROUP BY / HAVING
⏰ 4:58
SELECT P.PRODUCT_NAME, SUM(O.UNIT) AS UNIT
FROM PRODUCTS P
JOIN ORDERS O
USING (PRODUCT_ID)
WHERE DATE_FORMAT(O.ORDER_DATE,'%Y-%m') = '2020-02'
GROUP BY P.PRODUCT_NAME
HAVING SUM(O.UNIT) >= 100
[EASY] 1517. Find Users With Valid E-Mails
RLIKE / REGEXP
⏰ 21:26
* REGEXP = REGular EXPression
와. 정규표현식 처음 봤는데 익히느라 끙끙. 백슬래시 \ 한 번만 쓰면 왜 ?까지 같이 뽑히는지 모루겠다...
SELECT *
FROM USERS
WHERE MAIL RLIKE '^[A-Za-z][A-Za-z0-9_.-]*@leetcode\\.com$'
SELECT *
FROM USERS
WHERE MAIL RLIKE '^[A-Za-z][A-Za-z0-9_.-]*@leetcode[.]com$'
'[공부] SQL' 카테고리의 다른 글
[SQL 코딩테스트] 리트코드 Subqueries 정답 (1) | 2024.02.01 |
---|---|
[SQL 코딩테스트] 리트코드 Advanced Select and Joins 정답 (0) | 2024.01.31 |
[SQL 코딩테스트] 프로그래머스 JOIN 정답 (0) | 2024.01.26 |
[SQL 코딩테스트] 프로그래머스 GROUP BY 정답 (1) | 2024.01.25 |
[SQL 코딩테스트] 리트코드 Sorting and Grouping 정답 (1) | 2024.01.24 |