본문 바로가기

SQL/프로그래머스

(27)
SQL 프로그래머스_7일차 2 두기간 사이 일수,시간 차이 구하기 오랜 기간 보호한 동물(2) 문제 입양을 간 동물 중, 보호 기간이 가장 길었던 동물 두 마리의 아이디와 이름을 조회하는 SQL문을 작성해주세요. 이때 결과는 보호 기간이 긴 순으로 조회해야 합니다. 테이블 소개 테이블 예제 시계열 데이터를 잘다뤘다면 아주 쉬운 문제 였다. 두 기간 일수 차이 계산 DATEIFF(종료일, 시작일) 두기간 시간 차이 계산 TIMEIFF(종료일, 시작일) 01. 두기간의 차이를 시간과 일수로 조회 # 시간으로 일자 계산 코드 -- 데이터 시간을 시분초 까지 조회할때 '%Y-%m-%d %H:%i:%s' -- !중요 두기간을 계산할때 MAX값이 (838:59:59 = 40일 정도)가 최대인듯 하다! SELECT A.ANIMAL_ID,A.NAME, TIMEDIFF(B.DATETI..
SQL 프로그래머스_7일차_1 SET, SELECT 서브쿼리 ,변수 컬럼 생성 입양 시각 구하기(2) 문제 보호소에서는 몇 시에 입양이 가장 활발하게 일어나는지 알아보려 합니다. 0시부터 23시까지, 각 시간대별로 입양이 몇 건이나 발생했는지 조회하는 SQL문을 작성해주세요. 이때 결과는 시간대 순으로 정렬해야 합니다. 테이블 소개 정답 예시 정답 코드 SET @HOUR =-1; -- SET HOUR이라는 변수 생성 -1지정 SELECT (@HOUR := @HOUR+1) AS HOUR -- 변수에 1 더하기 N+=1 , (SELECT COUNT(HOUR(DATETIME)) -- 시간별 수 세기 FROM ANIMAL_OUTS WHERE HOUR(DATETIME) = @HOUR) COUNT -- 시간과 HOUR컬럼의 시간이 동일하면 시간별로 COUNT 하라 FROM ANIMAL_OUT..
SQL 프로그래머스6일차_8 GROUP BY , GROUP_CONCAT(), WITH 활용 우유와 요거트가 담긴 장바구니 - 문제 설명 CART_PRODUCTS 테이블은 장바구니에 담긴 상품 정보를 담은 테이블입니다. CART_PRODUCTS 테이블의 구조는 다음과 같으며, ID, CART_ID, NAME, PRICE는 각각 테이블의 아이디, 장바구니의 아이디, 상품 종류, 가격을 나타냅니다 - 테이블 소개 - 시도코드 밀크와 요거트 둘다 있어야하는 했는데 in을 써서 or형식으로 되어 고전했다. SELECT * FROM CART_PRODUCTS WHERE CART_ID IN ( SELECT CART_ID FROM CART_PRODUCTS GROUP BY ID HAVING NAME IN ('Milk' ,'Yogurt') ) -- 시도 코드 답은 맞은것 같으나 정답은 아니다. SELECT CAR..
SQL 프로그래머스 6일차_7 WHERE 서브쿼리 헤비 유저가 소유한 장소 문제 이 서비스에서는 공간을 둘 이상 등록한 사람을 "헤비 유저"라고 부릅니다. 헤비 유저가 등록한 공간의 정보를 아이디 순으로 조회하는 SQL문을 작성해주세요. 테이블 소개 문제 예제 정답 코드 - WHERE에서 서브쿼리를 할때 IN 기준 왼쪽 컬럼의 갯수와 오른쪽 컬럼의 갯수가 동일해야한다. - 그룹으로 묶어 HOST_ID가 두개이상인 HOST_ID를 추출해 IN으로 메인테이블과 비료하여 HOS_ID가 동일한 행만 추출 SELECT * FROM PLACES WHERE HOST_ID IN ( SELECT HOST_ID FROM PLACES GROUP BY HOST_ID HAVING COUNT(HOST_ID) >= 2 ) ORDER BY ID
SQL 프로그래머스 6일차_5 최대값구하여 최대값에 맞는 ROW 추출 GROUP BY 유의점 -- GROUP BY 로 그룹으로 묶은 컬럼별 최대값은 찾을수 있지만 GROUP BY만으로는 최대값에 맞는 다른 컬럼(이름,ID)는 조회할수 없다, -- 다만 WHERE에서 IN을 사용해 최대값과 동일한 값을 가진 데이터를 조회하면 ID,이름 등 최대값에 맞는 ROW을 맞게 추출할수 있다. 문제 FOOD_PRODUCT 테이블에서 식품분류별로 가격이 제일 비싼 식품의 분류, 가격, 이름을 조회하는 SQL문을 작성해주세요. 이때 식품분류가 '과자', '국', '김치', '식용유'인 경우만 출력시켜 주시고 결과는 식품 가격을 기준으로 내림차순 정렬해주세요. 테이블 소개 테이블 예제 시도 코드 - 문제점 문제가 카테고리별 최대값을 조회하는 것인데 최대값을 구했으나 최대값에 맞는 상품 ID..
SQL 프로그래머스 6일차_3 JOIN , GROUP BY , DATE_FORMAT,컬럼별 합계 5월 식품들의 총매출 조회하기 문제 FOOD_PRODUCT와 FOOD_ORDER 테이블에서 생산일자가 2022년 5월인 식품들의 식품 ID, 식품 이름, 총매출을 조회하는 SQL문을 작성해주세요. 이때 결과는 총매출을 기준으로 내림차순 정렬해주시고 총매출이 같다면 식품 ID를 기준으로 오름차순 정렬해주세요. 테이블 소개 문제 예시 정답 코드 - 조건 날짜를 먼저 WHERE을 통해 조건을 주고 총매출액을 구하기 위해 GROUP BY로 ID별로 그룹화 시킨후 SUM(물건 가격 * 주문수량)을 통해 아이디별 총 매출액을 구하였다. SELECT A.PRODUCT_ID,A.PRODUCT_NAME, SUM(A.PRICE * B.AMOUNT) AS TOTAL_PRICE FROM FOOD_PRODUCT A JOIN F..
SQL 프로그래머스_6일차_2 ROUND(AVG()), JOIN , GROUP BY , 정규화(REGEXP) 서울에 위치한 식당 목록 출력하기 문제 REST_INFO와 REST_REVIEW 테이블에서 서울에 위치한 식당들의 식당 ID, 식당 이름, 음식 종류, 즐겨찾기수, 주소, 리뷰 평균 점수를 조회하는 SQL문을 작성해주세요. 이때 리뷰 평균점수는 소수점 세 번째 자리에서 반올림 해주시고 결과는 평균점수를 기준으로 내림차순 정렬해주시고, 평균점수가 같다면 즐겨찾기수를 기준으로 내림차순 정렬해주세요. 테이블 설명 문제 예제 정답 코드 - GROUP으로 하기 전에 서울만 REGEXP로 서울로 시작하는 단어만 조회 그룹으로 묶은 후 그룹별 평균값을 만들었다 SELECT A.REST_ID,REST_NAME,FOOD_TYPE,FAVORITES,ADDRESS,ROUND(AVG(REVIEW_SCORE),2) AS SCO..
SQL 프로그래머스_6일차_4 IN, GROUP BY 최대 수 찾기 즐겨찾기가 가장 많은 식당 정보 출력하기 문제 REST_INFO 테이블에서 음식종류별로 즐겨찾기수가 가장 많은 식당의 음식 종류, ID, 식당 이름, 즐겨찾기수를 조회하는 SQL문을 작성해주세요. 이때 결과는 음식 종류를 기준으로 내림차순 정렬해주세요. 테이블 소개 시도 코드 1. 셀프 조인을 통해 즐겨찾기 수가 가장 많은 식당만 추출 ,단 조회는 되지만 오답이라고 뜬다 SELECT A.FOOD_TYPE,A.REST_ID,A.REST_NAME,B.FAVORITES FROM REST_INFO A JOIN (SELECT FOOD_TYPE,REST_ID,REST_NAME,MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE) B ON A.REST_ID=..