-
[Programmers] 새로 나온 문제 풀이모음 12문 (Lv.2~Lv.3)
📍Lv.2 (9문) 가격이 제일 비싼 식품의 정보 출력하기 SELECT product_id, product_name, product_cd, category, price FROM food_product WHERE price = (SELECT MAX(price) FROM food_product) 3월에 태어난 여성 회원 목록 출력하기 SELECT member_id, member_name, gender, DATE_FORMAT(date_of_birth, '%Y-%m-%d') FROM member_profile WHERE MONTH(date_of_birth)=3 AND gender='W' AND tlno IS NOT NULL ORDER BY 1 ASC 카테고리 별 상품 개수 구하기 SELECT LEFT(produ..
2023.01.09
-
[Programmers] 새로 나온 문제 풀이모음 10문 (Lv.1)
완결낸 플랫폼인줄 알았던 프로그래머스에 새 문제들이 나왔단 걸 들었다 기존에 29문제가 있었는데 이번에 32문제가 추가됐다 빠르게 레벨1부터 풀어봤다 강원도에 위치한 생산공장 목록 출력하기 SELECT factory_id, factory_name, address FROM food_factory WHERE address LIKE '강원도%' ORDER BY 1 나이 정보가 없는 회원 수 구하기 SELECT COUNT(user_id) AS USERS FROM user_info WHERE age IS NULL 경기도에 위치한 식품창고 목록 출력하기 SELECT warehouse_id , warehouse_name , address , IFNULL(freezer_yn, 'N') FROM food_warehous..
2023.01.09
-
[HackerRank] 15 Days of Learning SQL (Hard)
못 풀어서 다른사람 답안 보고 공부했다 FROM절이 거의 쓸모가 없고 네개의 각 컬럼을 다 따로 구하는 접근이 인상깊었다 해커랭크가 그렇게 어려운 플랫폼이 아닌데 이 문제만 갑자기 급발진이다 정말 어렵다 이런 답안을 내야 한다 컬럼1: 날짜 컬럼2: 첫날부터 지금까지 매일 최소1번 이상 제출한 사람수, 날이 갈수록 적어지는 깔대기 형태 컬럼3, 컬럼4: 이날 하루에 한해 가장 많이 제출한 사람의 아이디와 이름, 같은 횟수인 사람 있으면 id 낮은걸로 날짜별로 그룹바이해서 다 해결할 수 있는 문제가 아니다! 특히 컬럼2가 구하기 어렵다 SELECT s1.submission_date -- first column , (SELECT COUNT(DISTINCT s2.hacker_id) -- second colum..
2022.12.14
-
[LeetCode] 584. Find Customer Referee (Easy)
문제는 쉬운데 한번 되짚을 개념이 있어서 기록한다 SELECT name FROM Customer WHERE referee_id != '2' OR referee_id IS NULL '2'한테 추천받아 가입한게 아닌 사람을 고르는 문제인데, 조건에 !='2' 하나만 쓰면 추천인 없이 가입한 사람들마저 제외되어 나온다 OR로 null조건을 추가해줘야 한다 SQL은 조건의 결과를 True, False, Unknown 세가지로 구분한다고 한다 SQL이 비교연산자 =, != 등으로 전부 퉁치지 않고 굳이 IS NULL, IS NOT NULL을 따로 만든 걸 생각하면 납득이 쉽다.
2022.12.06
-
[LeetCode] 197. Rising Temperature (Easy)
전날보다 다음날 기온이 더 높았던 행(관측치)의 id 뽑기 SELECT w2.id FROM Weather w1 JOIN Weather w2 ON DATE_ADD(w1.recordDate, INTERVAL 1 DAY) = w2.recordDate AND w1.temperature < w2.temperature 만약 원본데이터가 시간순 정렬되어있었다면 LAG() 윈도우함수도 생각해볼 수 있었는데 그렇지가 않아서... DATE_ADD() 대신 DATEDIFF() = 1 을 써도 좋다
2022.12.06