본문 바로가기

DB/Programmers SQL Kit

즐겨찾기가 가장 많은 식당 정보 출력하기 https://school.programmers.co.kr/learn/courses/30/lessons/131123 - REST_INFO 테이블에서 음식 종류, id, 식당이름, 즐겨찾기 수를 조회한다. 단, 음식 종류별 즐겨찾기 수가 가장 많은 식당의 것을 출력하며 음식 종류 기준 내림차 정렬한다. 1. food_type 기준으로 그룹핑해서 food_type과 max(favorites)를 뽑아낸다. 2. 뽑아낸 값에 해당하는 음식별 값들을 추출한다. - SQL SELECT food_type, rest_id, rest_name, favorites FROM REST_INFO WHERE (food_type, favorites) IN (SELECT food_type, MAX(favorites) FAVORITE.. 더보기
주문량이 많은 아이스크림들 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/133027 - FIRST_HALF, JULY 테이블의 맛을 조회하기 단, 두 테이블의 총 주문량을 더 한 값이 큰 3개를 조회할 것 1. 맛별로 그룹핑한 테이블의 total_order를 sum 해서 조회 2. 조회한 테이블과 FIRST_HALF 테이블을 조인하여 두 total_order 값을 더한 값 조회 3. total_order가 가장 큰 값을 limit과 rownum으로 조회 -SQL mysql : SELECT flavor FROM ( SELECT half.flavor, j.total_order + half.total_order FROM ( SELECT flavor, sum(total_order.. 더보기
자동차 대여 기록에서 장기/단기 대여 구분하기 https://school.programmers.co.kr/learn/courses/30/lessons/151138 - CAR_RENTAL_COMPANY_RENTAL_HISTORY 테이블에서 대여기록을 조회한다. 단, 대여 시작일이 22년 9월에 속하는 대여기록이어야하며, 대여기간이 30일 이상이면 장기 대여, 아니면 단기 대여로 표시하는 컬럼을 추가해서 조회한다. 또한 기록 ID 기준 내림차 정렬한다. 1. 대여 시작일이 2022년 9월이 데이터를 조회한다. 2. DATEDIFF, 등을 사용해서 두 날짜 차이를 계산한다. 3. CASE를 사용해 날짜 차이 + 1가 >= 30 이면 장기 대여 아니면 단기 대여인 컬럼을 추가한다. (+1 인 이유는 대여 시작일을 포함해야한다.) - SQL mysql : S.. 더보기
조건에 맞는 사용자와 총 거래금액 조회하기 https://school.programmers.co.kr/learn/courses/30/lessons/164668 - USED_GOOS_BOARD와 USED_GOODS_USER 테이블에서 회원 ID, 닉네임, 총 거래 금액을 조회한다. 단, 완료 거래 총금액이 70만원 이상의 회원만 조회한다. 또한 총거래금액 기준 오름차 정렬한다. 1. 상태가 DONE인 거래 게시판들을 조회한다. 2. 작성자 ID를 기준으로 GROUPING한다. 3. 그룹핑한 ID와 ID별 SUM(거래금액) = 총 거래 금액을 조회한다. 4. 조회한 테이블의 작성자 ID와 USED_GOODS_USER 테이블의 유저 id를 조인한다. 5. 총 거래 금액이 70만원 이상인 회원만 거래금액 기준 오름차로 출력한다. - SQL SELECT .. 더보기
나이 정보가 없는 회원 수 구하기 https://school.programmers.co.kr/learn/courses/30/lessons/131528 - USER_INFO 테이블의 회원의 수를 출력한다. 단, 나이 정보가 없는 유저의 수를 세야하며 컬럼명은 USERS로 조회한다. 1. 나이 기준 IS NULL키워드로 조회한다. 2. count 함수로 개수를 센다. - SQL SELECT count(*) USERS FROM USER_INFO WHERE AGE IS NULL; 더보기
NULL 처리하기 https://school.programmers.co.kr/learn/courses/30/lessons/59410 - ANIMAL_INS 테이블의 동물의 생물 종, 이름, 성별 및 중성화 여부를 조회한다. 단, id 기준 오름차 정렬하며, 이름이 없는 동물을 NO name으로 기입한다. 1. NVL, IFNULL을 사용하여 NULL 값을 NO name 처리해준다. - SQL mysql : SELECT animal_type, IFNULL(name, 'No name'), sex_upon_intake FROM ANIMAL_INS ORDER BY animal_id ASC; oracle : SELECT animal_type, NVL(name, 'No name'), sex_upon_intake FROM ANIMAL.. 더보기
이름이 있는 동물의 아이디 https://school.programmers.co.kr/learn/courses/30/lessons/59407 - ANIMAL_INS 테이블의 동물 ID를 조회한다. 단, 이름이 있는 동물이어야 하며, ID 기준 오름차 정렬한다. 1. 이름 기준 IS NOT NULL 키워드로 조회한다. - SQL SELECT animal_id FROM ANIMAL_INS WHERE name IS NOT NULL ORDER BY animal_id ASC; 더보기
이름이 없는 동물의 아이디 https://school.programmers.co.kr/learn/courses/30/lessons/59039 - ANIMAL_INS 테이블의 동물 id를 조회한다. 단, 이름이 없는 동물이어야한다. 또한 id 기준 오름차 정렬한다. 1. 이름을 is null 키워드로 조회한다. - SQL SELECT animal_id FROM ANIMAL_INS WHERE name IS NULL ORDER BY animal_id ASC; 더보기