본문 바로가기

DB/Programmers SQL Kit

[My_SQL] 헤비 유저가 소유한 장소 문제 host_id를 기준으로 그룹화를 진행하고 값이 2 이상인 값만 모은 값의 host_id를 추출하고 host_id가 이 값들인 경우만 출력하면 된다.코드SELECT id, name, host_id FROM PLACES WHERE host_id in (SELECT host_id                   FROM PLACES                   GROUP BY host_id                   HAVING count(host_id) > 1) ORDER BY 1 ASC; 더보기
[My_SQL] 대장균의 크기에 따라 분류하기 2 문제 percent_rank를 알고 있다면 쉽게 풀 수 있는 문제이다. 퍼센트로 랭크를 나눈 테이블을 기준으로 CASE문을 사용하여 풀었다.코드WITH value as (SELECT id, percent_rank() over (ORDER BY size_of_colony desc) as percent FROM ECOLI_DATA) SELECT id,  CASE WHEN percent      WHEN percent      WHEN percent      ELSE 'LOW' END as 'COLONY_NAME' FROM value ORDER BY 1 ASC; 더보기
[My_SQL] 대장균의 크기에 따라 분류하기 1 문제 CASE 문을 사용할 줄 안다면 매우 쉽게 풀 수 있는 문제이다.코드SELECT id, CASE WHEN size_of_colony > 1000 then 'HIGH'      WHEN size_of_colony > 100 then 'MEDIUM'      ELSE 'LOW' END as 'SIZE' FROM ECOLI_DATA ORDER BY 1 ASC; 더보기
[My_SQL] 물고기 종류 별 잡은 수 구하기 문제 fish_type을 통해 두 테이블을 조인하고 fish_name을 기준으로 그룹화, 이후 count 함수를 써서 갯수를 카운트 한다.코드SELECT count(f.id) as fish_count, fn.fish_name as fish_name FROM FISH_INFO f JOIN FISH_NAME_INFO fn ON f.fish_type = fn.fish_type GROUP BY fn.fish_name ORDER BY 1 desc; 더보기
[My_SQL] 부모의 형질을 모두 가지는 대장균 찾기 문제LeftJoin과 형질이 2진수로 되어 있기에 &연산을 통해서 원하는 값을 찾는다.코드SELECT e.ID, e.GENOTYPE, ed.GENOTYPE AS PARENT_GENOTYPE  FROM ECOLI_DATA e JOIN ECOLI_DATA ed ON e.PARENT_ID = ed.ID WHERE (e.GENOTYPE & ed.GENOTYPE) >= ed.GENOTYPE ORDER BY 1; 더보기
[My_SQL] 조건에 맞는 아이템들의 가격의 총합 구하기 문제별 다른 설명이 필요없이 SUM 하나만 쓰면 쉽게 풀리는 문제이다.코드SELECT SUM(PRICE) as 'TOTAL_PRICE' FROM ITEM_INFO WHERE RARITY = 'LEGEND' 더보기
[My_SQL] 연도 별 평균 미세먼지 농도 조회하기 문제 YEAR 메소드로 년도 부분만 이용하고 AVG와 ROUND 함수를 통해 오염도의 평균치를 구한다.코드SELECT YEAR(ap.ym) as 'YEAR', ROUND(AVG(ap.pm_val1), 2) as 'PM10', ROUND(AVG(ap.pm_val2), 2) as 'PM2.5' FROM AIR_POLLUTION ap WHERE ap.location2 = '수원' GROUP BY YEARORDER BY 1 asc; OR SELECT YEAR(ap.ym) as 'YEAR', ROUND(AVG(ap.pm_val1), 2) as 'PM10', ROUND(AVG(ap.pm_val2), 2) as 'PM2.5'FROM AIR_POLLUTION apGROUP BY YEAR, ap.location1, ap.. 더보기
[My_SQL] 대여 기록이 존재하는 자동차 리스트 구하기 문제 10월 중에 대여를 시작한 세단의 car_id를 내림차순으로 정렬하는 문제이다.해당 문제를 풀기 위해서는 1. distinct2. DATE_FORMAT3. in세 예약어를 알아야한다. CAR_RENTAL_COMPANY_RENTAL_HISTORY 에서 10월 중에 대여를 시작한 차를 중복없이 출력하고해당 car_id를 가지면서 차 종류가 세단인 차량의 car_id를 CAR_RENTAL_COMPANY_CAR 테이블에서 출력한다.코드select car_id from CAR_RENTAL_COMPANY_CAR where car_type = '세단' and car_id in (select distinct ch.car_id     from CAR_RENTAL_COMPANY_RENTAL_HISTORY ch    .. 더보기