본문 바로가기

[공부] SQL

(18)
[SQL 코딩테스트] 프로그래머스 GROUP BY 정답 GROUP BY를 제대로 이해하는 시간. 항상 어려워하는 부분 중 하나인데 이번 기회에 제대로 뿌시고 가고 싶다. [LV3] 즐겨찾기가 가장 많은 식당 정보 출력하기 MAX ⏰ 25:04 [배움 1] GROUP BY의 기본 출력 법칙 SELECT FOOD_TYPE, REST_ID, REST_NAME, MAX(FAVORITES) FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ORDER BY FOOD_TYPE DESC 처음에 내가 풀었던 답은 이거였다. 아니... 쉬운 문제 아니야? 라고 생각했지만 GROUP BY의 기본 규칙이 내가 생각하는 것과 같지 않았다. GROUP BY를 했을 때, SELECT에서 불러오는 나머지 값들 (위에서는 REST_ID와 REST_NAME)은 ..
[SQL 코딩테스트] 리트코드 Sorting and Grouping 정답 어쩌다 보니 '해야 하는' 일들 중 코딩테스트가 제일 재밌는 일(?)이 되어 버려서 자꾸 여기로 도망온다. 오늘은 아침 일과 시작으로 코테부터 빠르게 뿌수고 진짜 해야 하는 일을 하러 가련다. 2356. Number of Unique Subjects Taught by Each Teacher #DISTINCT #GROUPBY ⏰ 4:47 SELECT TEACHER_ID, COUNT(DISTINCT SUBJECT_ID) CNT FROM TEACHER GROUP BY TEACHER_ID 1141. User Activity for the Past 30 Days I #BETWEEN #GROUPBY ⏰ 11:07 비트윈 함수를 쓸 때 무조건 AND 앞에 작은 숫자, 뒤에 큰 숫자가 와야 하는지 처음 알았다... 순..
[SQL 코딩테스트] 리트코드 Basic Aggregate Functions 정답 [EASY] 620. Not Boring Movies % / 연산자 조인 풀다가 넘어오니까 문제가 애교 수준으로 보인다..^^ 나머지를 구하는 연산자 %는 처음 써봤다. 또 하나 배워간다! SELECT ID, MOVIE, DESCRIPTION, RATING FROM CINEMA WHERE ID % 2 = 1 AND DESCRIPTION 'BORING' ORDER BY RATING DESC [EASY] 1251. Average Selling Price SUM /계산식 WITH의 편리함(?)에 빠져버린 나... 조인으로 더 쉽게 풀어내고 싶은데 어렵다. WITH AVG_PRICE AS (SELECT P.PRODUCT_ID, IFNULL(ROUND(P.PRICE * U.UNITS,2),0) AS AVERAGE..
[SQL 코딩테스트] 리트코드 Basic Joins 정답 조인이 두렵지 않게 되는 그 날까지! 1378. Replace Employee ID With The Unique Identifier #JOIN SELECT U.UNIQUE_ID, E.NAME FROM EMPLOYEES E LEFT JOIN EMPLOYEEUNI U ON U.ID = E.ID 1068. Product Sales Analysis I #JOIN SELECT p.product_name, s.year, s.price FROM sales s JOIN product p ON s.product_id = p.product_id 1581. Customer Who Visited but Did Not Make Any Transactions #JOIN #ISNULL SELECT V.CUSTOMER_ID, COU..
[SQL 코딩테스트] 리트코드 Select 정답 리트코드 초급(?) 문제로 넘어왔다! 지난주 한 주 만으로도 뭔가 자신감이 충전된 느낌. 기분 좋게 시작해본다. 1757. Recyclable and Low Fat Products #WHERE SELECT PRODUCT_ID FROM PRODUCTS WHERE LOW_FATS = 'Y' AND RECYCLABLE = 'Y' ; 584. Find Customer Referee #WHERE #ISNULL SELECT NAME FROM CUSTOMER WHERE REFEREE_ID '2' OR REFEREE_ID IS NULL ; 595. Big Countries #WHERE SELECT NAME, POPULATION, AREA FROM WORLD WHERE AREA >= 3000000 OR POPULATIO..
[SQL 코딩테스트] 프로그래머스 String, Date 정답 재밌을 때 진도 쭉쭉 빼기! 자동차 대여 기록에서 장기/단기 대여 구분하기 #DATEDIFF #DATE_FORMAT 와... 쓸데없이 짱 헤멘 문제. DATEDIFF한 결과값에 +1을 해줘야 한다. 질문하기 게시판에 요 내용으로 틀린 사람들이 수두룩... 왜냐하면 오늘 빌려서 오늘 반납한 경우, 두 날짜를 빼면 0이 되지만 대여일은 1일로 계산하기 때문이다. 마찬가지로 오늘 빌려서 내일 반납하면 대여일은 2일이다. SELECT history_id, car_id, DATE_FORMAT(start_date, '%Y-%m-%d') start_date, DATE_FORMAT(end_date, '%Y-%m-%d') end_date, IF (DATEDIFF(END_DATE,START_DATE)+1 >= '30', ..
[SQL 코딩테스트] 프로그래머스 IS NULL 정답 분명 별거 아닌거 아는데 뭔가 항상 틀릴 것 같고 무서운 NULL 관련 함수. 짧고 굵게 뿌셔보자. 경기도에 위치한 식품창고 목록 출력하기 #IFNULL 처음에 NULLIF와 헷갈려서 틀림. 아니 이걸 어케 외우지? 했는데 조금만 들여다보니 무식하게 영어를 해석하기만 하면 된다. NULLIF (A, B) : NULL로 해라. IF 만약에 A가 B이면! IFNULL (A, B) : IF 만약에 A가 NULL 이면 B해라! SELECT WAREHOUSE_ID, WAREHOUSE_NAME, ADDRESS, IFNULL(FREEZER_YN, 'N') FREEZER_YN FROM FOOD_WAREHOUSE WHERE ADDRESS LIKE '%경기%' ORDER BY WAREHOUSE_ID ; 이름이 없는 동물의..
[SQL 코딩테스트] 프로그래머스 SUM, MAX, MIN 정답 오늘도 쉬웠으면... 하는 바램을 안고 3일차 시작! 가격이 제일 비싼 식품의 정보 출력하기 #SUBQUARY #MAX 서브쿼리를 활용해야 하는 MAX 문제! MAX로 불러온 값에는 그 행의 값 '하나'밖에 없기 때문에 'PRICE = '을 걸어 조건을 준다고 이해하면 된다. SELECT * FROM FOOD_PRODUCT WHERE PRICE = (SELECT MAX(PRICE) FROM FOOD_PRODUCT) ; 가장 비싼 상품 구하기 #MAX 그러니까 이런 문제는 좀 1번에 넣으라고..? 레벨을 0으로 표기하던지...^^ SELECT MAX(PRICE) AS MAX_PRICE FROM PRODUCT ; 최댓값 구하기 #MAX SELECT MAX(DATETIME) FROM ANIMAL_INS ; 최..